Jquery XMLHttpRequest不是使用.setRequestHeader设置的

Jquery XMLHttpRequest不是使用.setRequestHeader设置的,jquery,http-headers,xmlhttprequest,cors,Jquery,Http Headers,Xmlhttprequest,Cors,我尝试提出跨域请求。要做到这一点,我必须设置一个http头 $.ajax({ type: 'GET', url: 'api', beforeSend: function (request) { request.setRequestHeader('authorization', 'Basic ...==');

我尝试提出跨域请求。要做到这一点,我必须设置一个http头

$.ajax({
                type: 'GET',
                url: 'api',
                beforeSend: function (request)
                {
                    request.setRequestHeader('authorization', 'Basic ...==');
                },
                success: function(data) {
                    debugger;
                }
            });
似乎调用了beforeSend方法,但未设置“授权””标题。你能帮我弄清楚这件事吗

更新:以下是收到的CORS标题:

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

似乎缺少访问控制允许标头。

确保您的API支持CORS,并且
授权
是要设置的允许请求标头。向端点发送选项请求时,API应使用以下响应头进行响应:

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-With
内容类型
授权
请求头,并允许
GET
POST
PUT
删除
选项
来自任何源域的动词


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

您确定您的API支持CORS吗?你在这里描述的症状强烈表明它不是。或者至少它不支持设置授权头。确保您的API发送正确的CORS头。还可以查看Google Chrome的控制台以查看潜在的错误。这就是那些警告发出的地方。谢谢达林的回答!服务器似乎没有设置访问控制允许标头。这就是问题所在。在这种情况下,不能执行跨域AJAX请求。