2014-11-08 26 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

相关问题