jquery - XMLHttpRequest 不是使用 .setRequestHeader 设置的

标签 jquery http-headers xmlhttprequest cors

我尝试发出跨域请求。为了能够做到这一点,我必须设置一个 http header 。

$.ajax({
                type: 'GET',
                url: 'api',
                beforeSend: function (request)
                {
                    request.setRequestHeader('authorization', 'Basic ...==');
                },
                success: function(data) {
                    debugger;
                }
            });

beforeSend 方法似乎已被调用,但未设置“授权” header 。你能帮我解决这个问题吗?

更新:以下是收到的 CORS header :

Access-Control-Allow-Origin : localhost
Access-Control-Allow-Credential: true
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS

似乎缺少Access-Control-Allow-Headers

最佳答案

确保您的 API 支持 CORS,并且 Authorization 是允许设置的请求 header 。当您向端点发送 OPTIONS 请求时,您的 API 应使用以下响应 header 进行响应:

Access-Control-Allow-Headers:X-Requested-With, Content-Type, Authorization
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:*

这允许客户端在调用 API 方法时设置 X-Requested-WithContent-TypeAuthorization 请求 header ,并且它允许来自任何来源的 GETPOSTPUTDELETEOPTIONS 动词域名。

因此,为了调试问题,首先向 API 端点发送 OPTIONS 请求并观察响应 HTTP header 。

关于jquery - XMLHttpRequest 不是使用 .setRequestHeader 设置的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223047/

相关文章:

javascript - ajax 数据中的 JQuery Multicheckbox 值

http - 什么时候发送 "if-none-match"请求?

PHP 错误 "Can not modify header information"

javascript - 使用带有 URL 的 JavaScript 获取 HTML 代码

javascript - 使用客户端的 IP 获取内容

javascript - 没有 jQuery 的 JSON

javascript - jquery 获取最后一个带有 th 的 tr

javascript - 为什么我的 YouTube 嵌入拒绝在视频轮播中调整大小?

由于 Wicket 框架插入的结构元素而出现问题的 JQuery 脚本

http-headers - Chrome 网络检查器中缺少请求 header (和发送的 cookie)?