0

HTTP-запросы с `withCredentials`: что это и зачем это нужно?

18

У меня возникла проблема с CORS при использовании Node.js и Angular. Добавление параметра с значением true решило мою проблему, но я не нашел информации о том, что это такое и какую функцию оно выполняет. Можете, пожалуйста, объяснить?

1 ответ(ов)

1

Короткий ответ:

withCredentials() заставляет ваш браузер включать куки и заголовки аутентификации в XHR-запрос. Если ваш сервис зависит от каких-либо куков (включая куки сеансов), эта опция должна быть установлена.

Подробное объяснение:

Когда вы отправляете Ajax-запрос на сервер с другого источника, браузер может отправить предзапрос OPTIONS на сервер, чтобы выяснить политику CORS этого конечного пункта (для не GET-запросов).

Поскольку запрос мог быть инициирован злоумышленным скриптом, чтобы избежать автоматической утечки информации для аутентификации на удаленный сервер, браузер применяет следующие правила:

Для GET-запросов куки и информация для аутентификации включаются в запрос к серверу только в следующих случаях:

  • если клиент XHR вызывается с установленным значением withCredentials в true,
  • и если ответ сервера не включает заголовок CORS Access-Control-Allow-Credentials: true, ответ будет отклонен до его возврата в Javascript.

Для не GET-запросов куки и информация для аутентификации включаются только в следующих случаях:

  • если withCredentials установлено в true на объекте XHR,
  • и сервер включил заголовок CORS Access-Control-Allow-Credentials: true в предзапрос OPTIONS.
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь