Restify GET Request返回响应cookie但不在浏览器中写入

时间:2014-05-29 14:54:16

标签: javascript node.js cookies restify

我使用Restify在Node.js中构建了一个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上,当然将cookiedomain设置为beauty.local,我确实在标题中看到了Set-Cookie行: / p>

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

日期:2014年5月29日星期四14:50:09 GMT     连接:保持活力

但是,当我在Chrome中检查我的devtools时,我看不到Resources / cookie / beauty.local下的cookie,也无法使用document.cookie获取它。 我确实将其视为网络选项卡下的响应cookie。

我有点困惑,因为当我直接在我的localhost上调用端点时它会起作用,但当我用另一个本地域的ajax调用它时,它不会。

我在这里缺少什么。

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试在设置中定义Cookie path

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

Here一些例子。

修改

xhr.withCredentials方法中的crossDomainjQuery.ajax属性可能存在一些问题。

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

更多信息

Jquery Ajax CORS + HttpOnly CookieSending credentials with cross-domain posts?