我有一个登录设置,用于其中一个用户将他们的信息输入到主页上的登录弹出窗口,然后将信息提交回servlet,然后接收通过JSON回应。主页然后继续发送用户到其个人资料页面或者显示错误(例如,如果用户名和密码不匹配)。具有Credentials和IE8 +兼容性的跨域AJAX POST
$.ajax({
dataType: 'jsonp',
async: false,
url: loginLocation,
type: 'GET',
crossDomain: true,
cache: false,
xhrFields: crossDomain ? {
withCredentials: true
} : {},
data: ({'key1': value1, 'key2': value2, ..., 'keyN':'valueN'}),
success: function(data){
if (data && data.status && data.status == "success") {
window.location = profileLocation;
} else {
errorHandler();
}
},
error: errorHandler
});
我期待从一个GET请求,POST为了防止任意查询字符串改变这一被发送到servlet。然而,看起来在这里应该考虑如何布置解决方案时需要考虑几个问题。它必须:
使用POST而不是GET
是跨域请求(登录页面并且servlet是在不同的域上这两个余有访问/控制)
使用withCredentials参数(登录功能依赖于JSESSIONID饼干所以需要此参数)
是兼容IE8和上述
我试图寻找到适合上述CR跨域Ajax请求iteria,但主要的障碍似乎是IE8/IE9的兼容性。诸如easyXDM之类的方法似乎不支持这些浏览器(我已经看到了在IE8中它如何工作的在线报告),而且我不想冒着意识到它在实现的一半中不起作用的危险。
总之,有没有办法使用POST和withCredentials参数来完成跨域ajax请求,这也与IE8 +兼容? easyXDM是一个适当的解决方案吗?