javascript - 使用 jquery 向非 native 服务器发送授权 header 时出错

标签 javascript php jquery ajax .htaccess

我在调用自制 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/

相关文章:

javascript - 正则表达式匹配javascript中的特定字符串

php - Laravel Forge 部署失败

页面中的 javascript 自动文件列表

php - jQuery 不能在 AJAX 加载的 DIV 中工作

jquery - 如何更改特定菜单项的文本颜色?背景改变但文字颜色不变?

javascript - 在 javascript 中将 map\reduce 与嵌套元素一起使用

javascript - Flot.js 设置 y 轴标签格式以显示两位小数

javascript - 从另一个函数构建 JavaScript 数组

javascript - 使用 jQuery 选择页面源中的下一个元素

javascript - 在 asp.net MVC 中打印表格行