retify GET请求返回响应cookie,但未写入浏览器

Restify GET Request returns response cookie but not written in browser

本文关键字:浏览器 cookie GET 请求 返回 响应 retify      更新时间:2023-09-26

我在Node.js中使用resttify构建了一个REST Api,它像一个魅力。其中一个REST端点,一个GET,做一些事情,然后将结果返回给调用者,在头中有一个Set-Cookie。

当我运行调用端点直接在我的浏览器上的http://127.0.0.1/theEnd我收到一个cookie,它也可以在document.cookie中看到日志含义设置cookie域为127.0.0.1

但是,当我从jquery Ajax函数调用端点时,在另一个域:http://beauty.local上,当然将cookieddomain设置为beauty。在本地,我确实在header中看到Set-Cookie行:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://beauty.local
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Headers: X-Requested-With,content-type
Access-Control-Allow-Credentials: true
Set-Cookie: beauty-api=U2FsdGVkX18Wg3X2OOLlbC2zc62b7ibHEiQ+0MuR6jE6/lhdPUTD8ZxBEJJ1gcJ4qK/87SZ57xwHHl/cxkA1pfw3+wLQ1zMGpn1z10wd++ZyV4J+IevFPm71DbMu9qTD0Rmk7eQjSywVkRtBgKZPInX15X3WU28tO6KYtHSunEesxt4mAn4Kp5DpVWEsO2TG;expires=Sat, 31 May 2014 14:50:09 GMT;domain=beauty.local;
Content-Type: application/json
Content-Length: 76
Access-Control-Expose-Headers: api-version, content-length, content-md5, content-type, date, request-id, response-time

日期:星期四,29 May 2014 14:50:09 GMT连接:维生

然而,当我在Chrome中检查我的devtools时,我没有在Resources/cookie/beauty下看到cookie。我也无法使用document。cookie获取它。我确实把它看作是网络选项卡下的响应cookie。

我有点困惑,因为当我直接在本地主机上调用端点时,它可以工作,但是当我从另一个本地域使用ajax调用它时,它不能。

我错过了什么

Thanks in advance

尝试在设置中定义cookie path

Set-Cookie: beauty-api=[...];domain=beauty.local;path=/

下面是一些例子。

编辑:

jQuery.ajax法中xhr.withCredentialscrossDomain的性质可能存在一些问题。

var post = $.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    data: data,
    xhrFields: {
        withCredentials: true
    }
});

更多信息:

Jquery Ajax CORS + HttpOnly Cookie用跨域帖子发送凭据?