我在调用自制 API 服务时发送一个字符串以及 Authorization
header 。在服务器端,我使用 PHP 的 apache_request_headers()
方法接收这些信息,以拆分所有 header 信息并获取通过 Authorization
发送的字符串以供进一步使用。
我进行的 Ajax 调用:
$.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
header 的发送值。例如 - 如果 API 消费者脚本和 API 提供者位于我的本地或远程服务器的相同域/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"
因此,不再存在允许 Origin 问题,而是现在的在 PHP 端发送/获取由 jQuery 设置的自定义 header 信息问题。
最佳答案
您可以将其添加到您的 .htaccess
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
关于javascript - 使用 jquery 向非 native 服务器发送授权 header 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26818026/