Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在CORS请求后,AJAX无法在浏览器上设置cookie。Set Cookie标头仅在FireFox中存在,在Chrome中不存在_Javascript_Jquery_Ajax_Cookies_Cross Domain - Fatal编程技术网

Javascript 在CORS请求后,AJAX无法在浏览器上设置cookie。Set Cookie标头仅在FireFox中存在,在Chrome中不存在

Javascript 在CORS请求后,AJAX无法在浏览器上设置cookie。Set Cookie标头仅在FireFox中存在,在Chrome中不存在,javascript,jquery,ajax,cookies,cross-domain,Javascript,Jquery,Ajax,Cookies,Cross Domain,我正在使用JQuery向NodeJS服务器发送一个AJAX请求,该服务器应该会将cookie设置回客户端而不会出现问题,但事实并非如此。我可以在响应中看到Set Cookie标题,但是浏览文档。Cookie字符串不包含我的Cookie!!如果有人能看一下这段代码,我将不胜感激 请求代码: $.ajax({ type: "POST", url: "https://my-site/mailcamp", contentType: "application/json", data

我正在使用JQuery向NodeJS服务器发送一个AJAX请求,该服务器应该会将cookie设置回客户端而不会出现问题,但事实并非如此。我可以在响应中看到
Set Cookie
标题,但是浏览
文档。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中得到这个。我有一些奇怪的矛盾:

我可以清楚地看到FireFox网络选项卡中的
设置Cookie
响应标题:

然而,它在Chrome中完全缺失


在解析
document.cookie
时,我根本找不到cookie。我已复制并粘贴了
document.cookie的内容,无法使用
ctrl+f
找到我的键/值对。为什么?这是怎么回事?它不应该被隐藏,因为我没有在cookie上添加
Httponly
标记,而是直接将其发送到我查询的域

这是一个愚蠢的问题。这是第三方饼干。虽然它是由外部域设置的,但接收方不能通过doc.cookies读取它,只能在浏览发送cookie的域时读取。我最终使用此源代码在客户端本地设置cookie,并发送后续请求以完成服务器操作:


浏览器可能有用户设置的首选项,不设置cookies。当然可能。我真正感到困惑的是,为什么我可以在FireFox开发工具中清楚地看到
请求cookie
——这意味着cookie必须已经设置好——但它们在
document.cookie
中不可见。正如您从服务器代码中看到的,我没有在它们上放置任何安全标志,这会使它们无法访问。为什么设置cookie头没有显示在chrome的响应头列表中?@where看起来是一个安全问题,新版本的chrome称为“Site Isolation”,可以禁用。我没有进一步测试此问题,但您可以查看以下文章: