2013-04-23 30 views
6

我正在嘗試訪問一些在Apache預先基本身份驗證下運行的RESTful服務。我正在使用jQuery的Ajax,併發送用戶和密碼與'身份驗證'標題。 但是,我的請求每次運行時都會拋出一個空錯誤。jquery ajax和搶先式基本身份驗證

以下是完整的$就電話:

$.ajax({ 
     cache:false, 
     url: urladdress, 
     type:'GET', 
     async:false, 
     headers: { "cache-control": "no-cache" }, 
     dataType: "html", //or xml or json 
     contentType: "html", 
     beforeSend : function(req) 
     { 
      req.setRequestHeader('Authorization', "Basic " + base64string); //user:password); 
     }, 
     success: function(data){ 
     successcallback(data); 
     }, 
     error: function(xhRequest, ErrorText, thrownError){ 
      alert("ERROR: "+ JSON.stringify(xhRequest)); 
     }, 
     complete: function(result){ 
     ... 
     } 
}); 

我做錯了嗎?我在這裏忽略了什麼嗎?謝謝。

+0

更新:\t 我改變了$ ajax參數。現在我使用用戶名和密碼:參數傳遞我的憑證。錯誤說: 「訪問受限制的URI被拒絕」聽起來像跨域問題,不是嗎? – 2013-04-23 18:20:35

+0

是的,如果您獲得「訪問受限制的URI被拒絕」,這是一個跨域問題。您需要爲此使用JSONP – 2013-04-24 02:56:06

+0

不幸的是,我想我將使用PHP代理來調用服務。似乎沒有任何方法可以通過簡單的JavaScript進行交叉。 – 2013-04-24 18:53:08

回答

1

該解決方案在服務器端,您必須包含一些自定義標題以響應跨域的工作。實驗發送以下標題響應:

訪問控制允許來源:yourApiDomain

訪問控制允許的方法:*

  • 如果使用自定義標題的:

    Access-Control-Expose-Headers:X-My-Custom-Header,X-Another-Custom-Header

    Access-Control-Allow-Headers:X-My-Custom-Header,X-Another-Custo米標頭

  • 在使用HTTP Cookie和HTTP認證信息的情況下:

    接入控制允許憑證:真

對於更詳細的信息讀取的文檔中MDN about CORS