我在Google App Engine中部署了一个应用程序,并且我还使用了Cloud Endpoint功能进行REst呼叫。
我使用自定义域指向我的应用程序。您可能知道,Endpoint不支持自定义域。所以我的情况是这样的:
现在的问题是:每当我向端点发出ajax请求时,都会创建一个新的Session!如何在请求之间保持会话?我检查了Endpoint的回复,但我没有找到任何对会话cookie的引用......
对于Ajax调用,我使用的是JQuery。
$.post('_ah/api/user/v1/login', function() {
console.log('logged');
});
我现在添加这是为了添加withCredentials字段。
$(document).ajaxSend(function(elm, xhr, s) {
xhr.withCredentials = true;
});
这是我的请求和服务器响应标头
请求
Accept:*/*
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://www.example.org
Referer:http://www.example.org/game.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
X-CSRFToken:xkNZPouvfl2mRT0IKFZNB2xJpffaaK3UuYhhg5eoeRAiMqxaoQ14q93cv2xeRnYP
响应
access-control-allow-credentials:true
access-control-allow-origin:http://www.example.org
access-control-expose-headers:Content-Encoding,Content-Length,Content-Type,Date,Server
alternate-protocol:443:quic,p=1
cache-control:private, max-age=0
content-encoding:gzip
content-length:165
content-type:application/json; charset=UTF-8
date:Sun, 19 Apr 2015 12:40:49 GMT
expires:Sun, 19 Apr 2015 12:40:49 GMT
server:GSE
status:200
version:HTTP/1.1
x-content-type-options:nosniff
x-frame-options:SAMEORIGIN
x-xss-protection:1; mode=block