HTTP-запросы с `withCredentials`: что это и зачем это нужно?
У меня возникла проблема с CORS при использовании Node.js и Angular. Добавление параметра с значением true решило мою проблему, но я не нашел информации о том, что это такое и какую функцию оно выполняет. Можете, пожалуйста, объяснить?
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.
Ошибка "Кросс-доменные запросы поддерживаются только для HTTP" при загрузке локального файла
Работа с $scope.$emit и $scope.$on в AngularJS
Как привязать значения списка чекбоксов в AngularJS?
Как установить свойство value в ng-options AngularJS?
AngularJS - Условное использование атрибутного директивы