Браузеры не отправляют файлы cookie при использовании CORS XHR

редактировать -Глядя на файлы cookie с помощью веб-инспектора Chrome, кажется, что независимо от значения срока действия файла cookie, браузер устанавливает его как файл cookie сеанса и удаляет его по запросу.

Я создаю пример CORS для класса, который я преподаю, используя Node.js и Express.

Однако, несмотря на то, что файлы cookie устанавливаются с сервера, они не отправляются обратно на сервер при последующих запросах. Это в значительной степени означает, что я не могу использовать какой-либо тривиальный менеджер сеансов.

Есть идеи, что мне здесь не хватает? Почему браузер не отправляет файлы cookie, установленные доменом, обратно в этот домен? Разве это не должно происходить автоматически?

редактировать -несколько примеров кода :настройка запроса XHR:

var xhr = new XMLHttpRequest();

xhr.open(method, url, true);
xhr.widthCredentials = true;

xhr.onreadystatechange = function(res){
    if (xhr.readyState == 4){
        cb(res,xhr);
    }
};

xhr.setRequestHeader("Content-Type",'application/json');

xhr.setRequestHeader('Accept','application/json');

xhr.send(JSON.encode({param:some_param})); 

сервер:

function allowCrossDomain(req,res,next) {  
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', req.headers.origin);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Requested-With');

    if (req.method!='OPTIONS') return next();

    res.send(204);
}                 

//while configuring express
app.use(allowCrossDomain)

Также стоит упомянуть, что я пробовал различные npmпромежуточные программы, которые делают одно и то же без заметной разницы

. Что касается сценария:

  1. Сделайте запрос CORS, используя XHR
  2. Сервер устанавливает файл cookie, который успешно отправляется обратно клиенту (экспресс-файл cookie сеанса)
  3. Следующий запрос XHR не отправит этот файл cookie обратно на сервер, поэтому экспресс не может идентифицировать пользователя,и поэтому создает новый файл cookie сеанса и так далее.
20
задан AriehGlazer 24 July 2012 в 06:34
поделиться