我使用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调用它时,它不会。
我在这里缺少什么。
提前致谢
答案 0 :(得分:0)
尝试在设置中定义Cookie path
。
Set-Cookie: beauty-api=[...];domain=beauty.local;path=/
Here一些例子。
修改强>
xhr.withCredentials
方法中的crossDomain
或jQuery.ajax
属性可能存在一些问题。
var post = $.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: data,
xhrFields: {
withCredentials: true
}
});
更多信息:
Jquery Ajax CORS + HttpOnly Cookie和 Sending credentials with cross-domain posts?