クロスドメイン http リクエスト (allowedOrigins = *) を許可し、CrossOriginFilter を使用してクロスドメイン認証 (allowCredentials=true) を許可するように Jetty サーバーを構成します。認証要件のないクロスドメイン 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,
...
}
エラー関数は常に起動します。誰でも問題が何であるか考えていますか?