edit - глядя на файлы cookie с помощью веб-инспектора Chrome, кажется, что независимо от того, какое значение имеет срок действия cookie, браузер устанавливает его как файл cookie сеанса и удаляет его для каждого запроса.
Я создаю пример CORS для класса, который я преподаю, используя Node.js и Express.
Однако, хотя файлы cookie устанавливаются с сервера, они не отправляются обратно на сервер по следующим запросам. Это в значительной степени означает, что я не могу использовать какой-либо тривиальный менеджер сеансов.
Любая идея, что мне здесь не хватает? Почему браузер не отправляет файлы cookie, установленные доменом обратно в этот домен? Не должно ли это происходить автоматически?
edit - некоторые примеры кода: настройка запроса 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
middlewares, которые делают то же самое без заметной разницы
Что касается сценария:
- Сделать запрос CORS с помощью XHR
- Сервер устанавливает cookie, который успешно отправляется клиенту (куки-курьерский сеанс)
- Следующий запрос XHR не отправит этот файл cookie на сервер, поэтому оператор не может идентифицировать пользователя и создает новый файл cookie для сеанса и т.д.