Javascript 使用jquery向非本机服务器发送授权标头时出错
调用自制API服务时,我将发送一个字符串以及Javascript 使用jquery向非本机服务器发送授权标头时出错,javascript,php,jquery,ajax,.htaccess,Javascript,Php,Jquery,Ajax,.htaccess,调用自制API服务时,我将发送一个字符串以及授权头。在服务器端,我使用PHP的apache\u request\u headers()方法接收这些信息,以分离所有头信息,并通过Authorization获取发送的字符串供我进一步使用。 我打了一个电话: $.ajax({ type: "GET", url: "http://x.x.x.x/speaker/api/sounds", headers: { "Authorizati
授权
头。在服务器端,我使用PHP的apache\u request\u headers()
方法接收这些信息,以分离所有头信息,并通过Authorization
获取发送的字符串供我进一步使用。我打了一个电话:
$.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提供程序脚本的同一域内运行的客户端脚本进行调用,我可以收到授权
头的发送值。例如-如果API使用者脚本和API提供程序位于我的localhast中或在我的远程服务器的同一域/ip下,则所有这些都可以正常工作
问题:仅当我从API提供程序位置以外的位置运行客户端脚本时,此问题才起作用。它返回时在浏览器(Chrome)控制台中观察到无效HTTP状态代码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端自定义头信息。您可以将其添加到.htaccess中 重写规则^-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
运气不好,@tareq jobayere发送和接收授权值不是阻塞问题。它的工作,但不是在不同的位置。只有当授权来自不同的来源时,授权才会被正确接收。为什么像Advanced REST client这样的工具会发送这些头并由服务器端完美地处理呢!但是,例如,从本地服务器调用远程服务器会带来痛苦。更新:从任何地方到我的服务器的CURL都可以正常工作
CURLhttp://x.x.x.x/speaker/api/sounds -H“Authorization:xxxxxxxxxxxxxxxxxxxx”
在通过JS从任何未经授权的位置使用选项时,似乎是一个证书问题。