2012-09-03 42 views
2

我正面臨着ajax CORS請求的問題。 我在任何其他瀏覽器中都可以使用它,但Firefox不會發送授權標頭。帶有憑證的jQuery CORS只能在Chrome中使用

赫雷什根據代碼

$.ajax(
{ 
    type: "GET", 
    url: 'http://www.urlhere.com/file.php', 
    crossDomain: true, 
    xhrFields: { withCredentials: true }, 
    headers: { 'Authorization': 'Basic .....' }, 
    error: function(data,error,errormsg) { 
    $('#serverTestLog').html('<h3><span style="color: red">' 
     + error + '</h3></span><p>'+errormsg+'</p>'); 
    }, 
    success: function(data) { 
     $('#serverTestLog').html('<h3><span style="color: green">success</h3>'); 
    } 
    }); 

這個問題似乎是Chrome是實際上與所述請求發送所述授權報頭的瀏覽器。如果我使用Firefox進行嘗試,它會詢問我輸入用戶名和密碼,然後在頭部設置正確的情況下開始一個新的請求,但是我想在沒有用戶交互的情況下執行此操作。

我也試着更換更換

headers: { 'Authorization': 'Basic .....' }, 

usename: 'username', 
password: 'password',   

而Chrome仍然是誰發送的授權頭在其請求的瀏覽器。這一次的Firefox結束與

NetworkError: 401 Authorization Required" without asking for username and password.

請求沒有任何人有一個想法,我怎麼能解決這個問題?

回答

0

因爲您正在發送請求withCredentials,所以在實際請求之前會執行預檢請求。預檢OPTIONS請求不包括用戶憑證per the CORS spec

OPTIONS請求最有可能與401響應,並且Firefox正確報告它。

沒有與ChromeWebKit開放的錯誤,其中預檢後的後續請求是由於401

反正即使 OPTIONS請求失敗發送
相關問題