Как отключить 'withcredentials' в заголовке HTTP с помощью node.js и пакета запроса?
Используя node.js и Request пакет из браузера (через browserify), Я использую CORS для выполнения запроса HTTP GET в отдельном домене.
На сервере, когда я установил 'Access-Control-Allow-Origin'
в подстановочный знак '*'
, я получаю следующую ошибку на клиенте:
XMLHttpRequest не может загрузить. Подстановочный знак '*' не может использоваться в Заголовок "Access-Control-Allow-Origin", когда флаг учетных данных правда. Поэтому Origin '...' не допускается.
Заголовок HTTP-запроса выглядит следующим образом:
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,ja;q=0.6
Access-Control-Request-Headers:withcredentials
Access-Control-Request-Method:GET
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:3000
Origin:http://localhost:9966
Pragma:no-cache
Referer:http://localhost:9966/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Так ясно, что проблема в Access-Control-Request-Headers:withcredentials
в заголовке, правильно?
Чтобы убрать это, мне нужно установить свойство 'withcredentials' объекта XMLHttpRequest 'false'. Однако я не могу понять, где node.js или пакет запроса создают объект XMLHttpRequest и как я могу получить к нему доступ.
Спасибо.
Ответы
Ответ 1
После некоторого расследования я обнаружил, что параметр withCredentials
может быть передан через объект параметров options:
var req = http.request({
withCredentials: false
}, function(res) {
//...
});
req.end();
Если undefined
, значением по умолчанию является true
.
Ссылка из источника http-browserify/lib/request.js
:
if (typeof params.withCredentials === 'undefined') {
params.withCredentials = true;
}
try { xhr.withCredentials = params.withCredentials }
catch (e) {}