gpt4 book ai didi

jquery 跨域认证

转载 作者:可可西里 更新时间:2023-11-01 15:11:57 31 4
gpt4 key购买 nike

我将我的 Jetty 服务器配置为允许跨域 http 请求 (allowedOrigins = *) 并使用其 CrossOriginFilter 允许跨域身份验证 (allowCredentials=true)。没有身份验证要求的跨域 http 请求工作正常。现在,当涉及到需要身份验证的 http 调用时,使用 JQuery 是行不通的。我使用以下代码并遵循此示例:http://www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/

function login(username, password) {
$.ajax({
type: "GET",
contentType: "application/json",
dataType: "json",
url: url,
beforeSend: function(xhr) {
var base64 = Base64.encode(username + ":" + password);
xhr.setRequestHeader("Authorization", "Basic " + base64);
xhr.withCredentials = true;
},
error: function(data){
alert("error");
},
success: function(data){
alert("success");
}
});

在 HTTPFox 中,我看到对服务器的以下请求:

OPTIONS /login HTTP/1.1
...
Access-Control-Request-Method GET
Access-Control-Request-Headers authorization,content-type

服务器响应

HTTP/1.1 204 No Content
...
Allow OPTIONS,GET,HEAD

我还使用了下面的选项,这没有什么区别。

$.ajax({
...
username: username,
password: password,
...
}

错误函数总是会触发。有人知道问题出在哪里吗?

最佳答案

因为默认允许的 header 是

X-Requested-With,Content-Type,Accept,Origin

我必须添加标题

authorization,content-type

通过日志文件找到的

DEBUG [2012-05-27 17:04:02,468] org.eclipse.jetty.servlets.CrossOriginFilter: Headers [authorization,content-type] are not among allowed headers [X-Requested-With, Content-Type, Accept, Origin]

感谢所有提示!

关于jquery 跨域认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769791/

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