Почему Chrome отправляет учетные данные пользователя с предварительно настроенным запросом CORS? - PullRequest
0 голосов
/ 23 марта 2012

В спецификации CORS w3.org прямо указано, что учетные данные пользователя должны быть опущены при выполнении предварительно настроенного запроса с CORS:

Исключить учетные данные пользователя.

Почему Google Chrome не делает этого?

Взгляните на следующий код.

var url = 'http://example.net/resources/test.php';
var xhr = new XMLHttpRequest();
xhr.open('PUT', url, true);
xhr.onreadystatechange = handler;
xhr.withCredentials = true;
xhr.send();

Вот заголовки запроса из приведенного выше сценария.

OPTIONS /resources/test.php HTTP/1.1
Host: example.net
Connection: keep-alive
Access-Control-Request-Method: PUT
Origin: http://elsewhere.example.net
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.79 Chrome/17.0.963.79 Safari/535.11
Access-Control-Request-Headers: Origin
Accept: */*
Referer: http://elsewhere.example.net/cors-example.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: somecookies=here

Как видите, файлы cookie (учетные данные пользователя) отправляются вместе, несмотря на спецификацию CORS. Есть ли причина этого?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Звучит как ошибка. Вы можете отправить сообщение об ошибке в Google: new.crbug.com

0 голосов
/ 13 апреля 2012

Да, есть причина. Вы специально сказали XHR, что он должен включать учетные данные, установив свойство:

xhr.withCredentials = true;

Удалите эту строку, и Chrome должен сделать запрос без файлов cookie.

...