AJAX не может установить Cookies в браузере после запроса CORS.Заголовок Set-Cookie присутствует только в FireFox, а не в Chrome - PullRequest
0 голосов
/ 15 декабря 2018

Я отправляю запрос AJAX с помощью JQuery на сервер NodeJS, который ДОЛЖЕН без проблем устанавливать файлы cookie клиенту, но это НЕТ.Я могу видеть заголовки Set-Cookie в ответе, но при этом в строке document.cookie НЕ содержатся мои файлы cookie !!Если бы кто-нибудь мог взглянуть на этот код, я был бы очень признателен.

Код запроса:

$.ajax({
   type: "POST",
   url: "https://my-site/mailcamp",
   contentType: "application/json",
   dataType: "json",
   processData:false,
   data: JSON.stringify(reqBody),
   success: function (data) {
      console.log(data);   
   },
   xhrFields: { withCredentials: true },
   crossDomain: true,
})

Ответ сервера:

app.use('/*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "https://www.texashunterproducts.com");
  res.header("Access-Control-Allow-Headers", "Origin, x-access-token, x-user-pathway, x-mongo-key, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
  res.header("Access-Control-Allow-Credentials", true);
  next();
});

router.route('/mailcamp')
    .post(async (req, res, next) => {
        try { 
            res.setHeader('Set-Cookie', [`texaspopup=true`]);
            res.cookie("texcookienowpopupnow", "trueasheck")
            res.send("Send me dem cookiez");
        } catch(err) { next(err) }
    })

Я простоНЕ получать это в document.cookie.У меня есть некоторые странные несоответствия:

Я отчетливо вижу заголовок ответа Set-Cookie на вкладке «Сеть FireFox»:

enter image description here enter image description here

Однако в Chrome он полностью отсутствует!

enter image description here

Я не могу найти cookie при разборе document.cookie совсем.Я скопировал + вставил содержимое document.cookie и не могу найти свою пару ключ / значение, используя ctrl+f.Зачем?Что тут происходит?Он не должен быть скрыт, потому что я не добавляю маркеры Httponly в файл cookie и отправляю его непосредственно в домен, с которого запрашиваю.

1 Ответ

0 голосов
/ 16 декабря 2018

Это была глупая проблема.Это стороннее печенье.Хотя он установлен внешним доменом, он не может быть прочитан получателем через doc.cookies, только при просмотре домена, из которого был отправлен файл cookie.В итоге я использовал код из этого источника для локальной установки файла cookie в клиенте, а также отправил следующий запрос на выполнение действия сервера:

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie/Simple_document.cookie_framework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...