Подтвердить что ты не робот

Как отключить '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 и как я могу получить к нему доступ.

Спасибо.

4b9b3361

Ответ 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) {}