Что именно делает заголовок Access-Control-Allow-Credentials? - программирование
Подтвердить что ты не робот

Что именно делает заголовок Access-Control-Allow-Credentials?

Я пытаюсь понять, как использовать CORS, и я смущен тем, что делает заголовок Access-Control-Allow-Credentials.

В документации говорится

Указывает, может ли отображаться ответ на запрос когда флаг учетных данных верен.

Но я не понимаю, что означает "открытый" ответ.

Может ли кто-нибудь объяснить, что на самом деле этот заголовок установлен на true (в сочетании с флагом учетных данных, установленным на true)?

4b9b3361

Ответ 1

По умолчанию CORS не включает файлы cookie для запросов с кросс-началом. Это отличается от других методов перекрестного происхождения, таких как JSON-P. JSON-P всегда включает файлы cookie с запросом, и это поведение может привести к классу уязвимостей, называемому подделкой запроса на межсайтовый поиск или CSRF.

Чтобы уменьшить вероятность уязвимостей CSRF в CORS, CORS требует, чтобы и сервер, и клиент подтвердили, что это нормально, чтобы включать куки в запросы. При этом cookie принимает активное решение, а не что-то, что происходит пассивно без какого-либо контроля.

Клиентский код должен установить свойство withCredentials на XMLHttpRequest на true, чтобы дать разрешение.

Однако этого заголовка недостаточно. Сервер должен отвечать заголовком Access-Control-Allow-Credentials. Ответ с этим заголовком на true означает, что сервер разрешает куки (или другие учетные данные пользователя) включаться в запросы кросс-происхождения.

Вам также необходимо убедиться, что ваш браузер не блокирует сторонние файлы cookie, если вы хотите, чтобы выполняемые учетные запросы с кросс-началом работали.

Обратите внимание, что независимо от того, выполняете ли вы запросы с одним и тем же источником или кросс-оригиналом, вам необходимо защитить свой сайт от CSRF (особенно если ваш запрос включает файлы cookie).