我正在开发一个 phonegap 应用程序,需要连接到 staless 远程服务器。一些远程请求已通过身份验证,我计划使用remember-me服务。因此,从应用程序中有一个登录选项,该选项被转换为使用 jQuery $ .ajax 执行的以下请求。请注意,所有请求都是 application / json
POST remoteserver / api / users / login
并且服务器响应设置cookie
Set-Cookie REMEMBER_ME_COOKIE = amVzdS5hbG9uc29AZ21haWwuY29tOjEzNTEwMDg1NTg1NDY6ODdkOGFhNzEzY2NiZTRhZTIwZjZlNzgyY2E1ZmQyODY; Expires = Tue,2012年10月23日16:09:18 GMT;路径= /;仅Http
为了使跨域请求有效,服务器会对OPTIONS请求做出响应:
Access-Control-Allow-Headers : Content-Type, *
Access-Control-Allow-Origin : *
Access-Control-Max-Age : 1000
然而,对服务器的下一个请求不是设置Cookie标头。
1)是否可以使cookie工作?
2)我还尝试在$ .ajax请求中手动添加cookie,但它也不起作用。这有什么不对吗?
$.ajax({
type : type,
url : url,
data : data,
success : callback,
dataType : dataType,
contentType : contentType,
beforeSend: function(xhr) {
xhr.setRequestHeader("Cookie", "REMEMBER_ME_COOKIE=amVzdS5hbG9uc29AZ21ha");
},
error : function(jqXHR, textStatus, errorThrown) {
handleError(jqXHR, textStatus, errorThrown);
}
});
答案 0 :(得分:1)
您是否尝试将标头结构化为您的请求?
$.ajax({
type : type,
url : url,
data : data,
success : callback,
dataType : dataType,
contentType : contentType,
headers:{
"Cookie" : "amVzdS5hbG9uc29AZ21ha"
},
error : function(jqXHR, textStatus, errorThrown) {
handleError(jqXHR, textStatus, errorThrown);
}
});