2

我尝试发出跨域请求。为了能够做到这一点,我必须设置一个 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

看起来缺少Access-Control-Allow-Headers 。

4

1 回答 1

2

确保您的 API 支持 CORS,并且这Authorization是允许设置的请求标头。当您向端点发送 OPTIONS 请求时,您的 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,Content-Type和请求标头,并且它允许来自任何源域的, , , ,动词。AuthorizationGETPOSTPUTDELETEOPTIONS

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

于 2013-10-07T11:06:15.403 回答