2012-09-07 38 views
0

我正在使用JavaScript客戶端使用的RESTful API。所有API調用都經過身份驗證。不幸的是,如果提供的憑據不正確,會彈出可怕的瀏覽器提示。AJAX HTTP基本身份驗證解決方法

現在,我知道有沒有辦法在客戶端壓制這一點。幸運的是,我控制着客戶端和API。

我想保持API儘可能佳能。所以我寧願不將響應代碼更改爲403.作爲替代方案,我正在考慮允許客戶端禁止WWW-Authenticate標頭(通過請求中的自定義標頭)。至少在最新版本的Chrome中,它似乎觸發了提示,並不一定是401代碼本身。

有沒有人有任何見解?在其他瀏覽器中可靠嗎?任何我不應該走這條路的原因?

感謝,

回答

0

的彈出框是401 Unauthorized答案,如果你正在使用jQuery你可以趕上,要麼在error()回調,或在Ajax調用的statusCode屬性:

$.ajax({ 
    url : url, 
    type : 'GET/POST/PUT/DELETE', 
    data : { your data here }, 
    dataType : 'json/xml/html', 
    statusCode : { 

     200 : function(data, textStatus, jqXHR){ 

      // your logic here 

     },         

     401 : function(jqXHR, textStatus, errorThrown){ 

      // your logic here 

     } 

    } 

}); 

如果您需要對請求頭執行任何編輯,請在調用中使用beforeSend()回調,以便在注入/刪除東西之前執行。

+0

你是否建議通過捕獲它我可以阻止它顯示? – KTastrophy

+0

@KTastrophy我的不好,我嘗試了我自己,401對話框出現在ajax調用中 - 所以你可能會在回答XHR時壓制'WWW-Authenticate頭部'。 – moonwave99