使用jquery将Authorization标头发送到非本机服务器时出错

时间:2014-11-08 14:18:44

标签: javascript php jquery ajax .htaccess

我在调用自制API服务时发送一个字符串和Authorization标题。在服务器端,我使用PHP的apache_request_headers()方法接收这些信息,以拆分所有标题信息并通过Authorization获取字符串以供我进一步使用。
我做的Ajax Call:

$.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);
        }
});

注意:如果我从在API提供程序脚本的同一域内运行的客户端脚本进行调用,我可以收到Authorization标头的发送值。例如 - 如果API使用者脚本和API提供程序保留在我的localhast或远程服务器的同一域/ 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"

因此,没有更多允许来源问题,它现在发送/获取由jQuery 问题设置的PHP端头信息。

1 个答案:

答案 0 :(得分:3)

您可以将其添加到.htaccess

  

RewriteRule ^ - [E = HTTP_AUTHORIZATION:%{HTTP:授权}]