我配置我的码头服务器以允许跨域的HTTP请求(allowedOrigins = *),也允许跨域认证(allowCredentials =真)使用其CrossOriginFilter。 跨域http请求没有认证要求工作正常。现在谈到需要身份验证的http调用时,无法使用JQuery。我用下面的代码和接着这个例子:http://www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/jQuery的跨域认证
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,
...
}
错误函数总是激发。 任何人都知道问题可能是什么?
你在你的响应头看到这个'访问控制 - 允许原产地:*'?顺便问一句好!欢迎来到StackOverflow! – jmort253
我认为如果你能显示与这个问题相关的任何堆栈轨迹,这将会很有帮助。 – jmort253
好的,请检查您的回复中是否包含该标题。如果不是,那么安全性可能会覆盖响应头。需要查看更多日志以进一步调试。祝你好运! :) – jmort253