我配置我的碼頭服務器以允許跨域的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