Ответ
CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который позволяет веб-странице запрашивать ресурсы (например, API, шрифты, изображения) с другого домена, отличного от того, с которого была загружена сама страница.
По умолчанию браузеры применяют Политику одинакового источника (Same-Origin Policy), которая запрещает такие междоменные запросы. CORS предоставляет серверам способ "сообщить" браузеру, что запросы с определенных доменов безопасны и разрешены.
Ключевые HTTP-заголовки CORS (отправляемые сервером):
Access-Control-Allow-Origin: Указывает, каким доменам разрешен доступ. Значение может быть конкретным доменом (https://example.com) или*(любой домен, но это небезопасно для API, требующих аутентификации).Access-Control-Allow-Methods: Перечисляет разрешенные HTTP-методы (GET,POST,PUT,DELETEи т.д.).Access-Control-Allow-Headers: Перечисляет заголовки, которые разрешено использовать в запросе.Access-Control-Max-Age: Указывает, как долго результаты предварительного запроса (preflight request) могут быть кэшированы.
Пример настройки в FastAPI (Python):
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
# Список разрешенных доменов
origins = [
"http://localhost:3000",
"https://my-frontend-app.com",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins, # Разрешить запросы с этих доменов
allow_credentials=True,
allow_methods=["GET", "POST"], # Разрешить только GET и POST
allow_headers=["Authorization"], # Разрешить заголовок Authorization
)
@app.get("/")
def read_root():
return {"Hello": "World"}