gpt4 book ai didi

Jquery Ajax Firefox 不发送 cookie(Chrome 有效)

转载 作者:行者123 更新时间:2023-12-03 22:26:57 26 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 Ajax 身份验证,并且我似乎已经让它工作了,除了 Firefox 似乎没有在后续请求的“cookie”请求 header 中向服务器发送正确的 jessionid,而 chrome 却这样做了所以就好了。这是登录功能:

$.ajaxSetup({
xhrFields: {
withCredentials : true
}
})
function sudoLogin(callback){

$.ajax({
url : HOST + "/ProperApp/j_spring_security_check",
type : "POST",
data : $("#login").serialize(),
dataType: 'json',
async : false,
success: function(result) {
if (result.login) {
callback(true);
} else {
callback(false);
}
}
})
}

在 Firefox 的响应中,我可以看到正在设置 cookie,并调用成功回调:

Set-Cookie  JSESSIONID=81235e7ff741e941c1e078afee5c; Path=/ProperApp; HttpOnly

但是,在后续请求中(例如本次请求),不会发送 cookie:

function getUserDeets(callback){
$.ajax({
url : HOST+ "/ProperApp/userData",
type : "GET",
async : false,
dataType : 'json',
xhrFields: {
withCredentials: true
},
success : function(data){
callback(data);
}
})
}
$('#submitLogin').click(function(){
sudoLogin(function(loggedIn){
if(loggedIn){
//window.location = "sudoIndex2.php";
getUserDeets(function(user){
alert(user);
})

}
else
alert("login failure");
});
});

在Chromium中,请求包含cookie头,成功回调被正确调用:

...
Connection:keep-alive
Cookie:JSESSIONID=8129ef67b59180f9f21383cba850
Host:localhost:8080
Origin:http://localhost:8000
Referer:http://localhost:8000/loginSignup.php
...

但是在 Firefox 中,请求 header 不包含 cookie header ,并且永远不会调用成功:

...
Connection keep-alive
Host localhost:8080
Origin http://localhost:8000
Referer http://localhost:8000/loginSignup.php
...

我在服务器端创建了一个ajax过滤器,我认为应该允许这种情况发生:

response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
response.setHeader("Access-Control-Max-Age", "360");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "Authorization");

知道为什么这可以在 Chrome 中无缝运行,但不能在 Firefox 中运行吗?

最佳答案

如果您希望使用 native ajax 或 jquery ajax,请去掉 async:false。它对我有用。

为了进一步兼容旧版浏览器,我建议使用 http://easyxdm.net/wp/ 。 EasyXDM 方法是使用 iframe hack,它要求您在要进行 ajax 调用的主机上放置一个 html 文件。是的,这将是强制异步的。但这个 easyXDM 的好处是您不必担心 cors header 。

关于Jquery Ajax Firefox 不发送 cookie(Chrome 有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com