使用 JQuery 1.8.2
我正在从一个 AppServer 向应用程序发出 CORS 请求(Front)到另一个应用程序服务器(Back) 服务器。当我进行以下 Ajax 调用时Front,来自的 302 响应(安全检查)Back很荣幸,但我的 JSESSIONID cookie 未存储:
$.ajax({
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
现在,如果我进行相同的调用,但添加了 withCredentials,我的 JSESSIONID 将被正确存储,但 302 重定向将被删除。 Chrome 和 Firefox(两者的最新版本)都会停止处理请求。
$.ajax({
xhrFields: { withCredentials: true },
url : url,
dataType : 'html',
success : function(data, status, xhr) {
$(dataContainer).append(data);
},
complete: function(xhr, status, error) {
if (xhr.status != 200) {
$.logger(xhr.getResponseHeader('Location'));
}
}
});
我尝试从 xhr 对象中获取重定向位置标头,但它是空的。
我对所有来自的回复进行以下设置Back:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
response.setHeader("Access-Control-Max-Age", "1728000");
response.setHeader("Access-Control-Allow-Headers", "Cookie,X-Requested-With");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Expose-Headers", "Location");
显然,当/如果我能让它正常工作时,我会限制 Origin。
有谁知道使用 JQuery 需要什么?这是一个 JQuery 问题,还是一个经历过所有 Ajax+CORS 请求的问题?