2014-11-08 65 views
2

我在調用自制API服務時發送字符串以及Authorization標頭。在服務器端,我使用PHP的apache_request_headers()方法接收這些信息,將所有標題信息分開,並通過Authorization發送字符串以供我進一步使用。
AJAX調用我做:使用jquery向非本地服務器發送授權標頭時出錯

$.ajax({ 
     type: "GET", 
     url: "http://x.x.x.x/speaker/api/sounds", 
     headers: { 
      "Authorization": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
     }, 
     success: function(response){ 
       console.log(response); 
     }, 
     error: function(response){ 
      console.log(response); 
     } 
}); 

注:我可以接收Authorization頭的發送值如果我從中API提供腳本的同一區域內部運行的客戶端腳本調用。例如 - 如果API消費者腳本和API提供程序停留在我的本地熱點或我的遠程服務器的相同域/ IP下,則一切正常。

問題:僅當我從API提供程序位置以外的位置運行客戶端腳本時,該功能才起作用。它返回一個在瀏覽器(Chrome)控制檯中觀察到的Invalid HTTP status code 404錯誤。

我已經更新了.htaccess文件到:

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "*" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

那麼,有沒有更允許起源問題,它現在發送/獲取自定義標題在PHP結束的jQuery問題的設置信息。

+0

**更新:**捲曲從任何地方到我服務器甚至可以正常工作'''curl http:// xxxx/speaker/api/sounds -H'授權:xxxxxxxxxxxxxxxxxxxxxxx'''' 從任何未經授權的位置使用'''OPTIONS'''似乎通過JS 。 – 2014-11-08 16:39:59

回答

3

可以

重寫規則添加到您的.htaccess這個^ - [E = HTTP_AUTHORIZATION:%{HTTP:授權}]

+0

運氣不好,@ tareq-jobayere 發送和接收授權的價值不是封鎖問題。它的工作,但不是與不同的位置。 僅當授權從不同原點出發時才能正確接收。 – 2014-11-08 15:54:59

+0

高級REST客戶端等工具如何發送這些頭文件並完美地處理服務器端?但是例如 - 從本地服務器到遠程服務器的呼叫正在產生痛苦。 – 2014-11-08 16:01:20

相關問題