Проблема CORS в Nginx с FastAPI: работает с `*`, но не работает с определенными доменамиPython

Программы на Python
Anonymous
Проблема CORS в Nginx с FastAPI: работает с `*`, но не работает с определенными доменами

Сообщение Anonymous »

Я столкнулся с проблемой CORS при настройке приложения FastAPI через обратный прокси-сервер Nginx. Настройка работает нормально, когда я устанавливаю Access-Control-Allow-Origin на *. Однако когда я заменяю * на определенные домены, я получаю ошибку CORS в браузере:
Вот моя конфигурация Nginx:

Код: Выделить всё

server {
listen 443 ssl http2;
server_name backend.example.com;

ssl_certificate /etc/letsencrypt/live/backend.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/backend.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

location /neurotalk/ {
proxy_pass http://127.0.0.1:8443;  # Proxying to Uvicorn
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# CORS headers
add_header 'Access-Control-Allow-Origin' 'https://frontend.example.com';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';

# Additional settings
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_redirect off;

# Disable buffering for streaming responses
proxy_buffering off;
proxy_request_buffering off;
}
}
В моем приложении FastAPI я также добавил промежуточное ПО CORS следующим образом:

Код: Выделить всё

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

origins = [
"https://frontend.example.com",
]

app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
Когда я устанавливаю add_header 'Access-Control-Allow-Origin' '*' в Nginx, все работает нормально. Но когда я заменяю его конкретным доменом (https://frontend.example.com), в браузере появляется ошибка CORS.
Я пробовал следующее:
  • Дважды проверил написание доменного имени.
  • Очистил кеш браузера.
  • Перезапустил Nginx и приложение FastAPI.
    Может ли кто-нибудь помочь мне понять, почему эта конфигурация * работает, но не работает с конкретным доменом?
Спасибо. !

Подробнее здесь: https://stackoverflow.com/questions/790 ... ic-domains

Вернуться в «Python»