跨域请求js代码:
$.ajax({
type:"post",
async:false,
contentType : "application/x-www-form-urlencoded;charset=UTF-8",
//data:"username=superadmin&password=1&captcha=",
data:{
username:"superadmin",
password:"1",
captcha:""
},
xhrFields: {
withCredentials: true
},
crossDomain:true,
url : "http://127.0.0.1:8090/platform/login/doLogin",
complete : function(xhr) {
if (xhr.readyState == 4 && xhr.status == 200) {
var ret = xhr.responseJSON;
debugger;//这里能收到登录成功的信息
... ...
} else {
... ...
}
}
});
controller中增加了
res.setHeader("Access-Control-Allow-Origin","http://127.0.0.1:8080");
res.setHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept, Key");
res.setHeader("Access-Control-Allow-Credentials","true");
场景描述:
我的login页面是在tomcat的8080端口的一个服务,nutzwk起在了另一个Tomcat的8090端口。
比如当前浏览器打开login页面,然后再谷歌开发者工具中查看cookie,内容如下
name value domain path
sid a948518-3d0c-4b39-8898-616b7850b609 127.0.0.1 / ..........
然后发送登录请求,返回信息是登录成功。开发者工具中查看doLogin的请求
request cookies 中sid=f2cae97c-f38f-4a79-b150-127810117f3a
浏览器的cookie的sid值 和 login请求的request的sid 不一样,其中f2cae97c-f38f-4a79-b150-127810117f3a这个在redis中是登录状态。请问这是为什么?