Access Control-Allow-Headers不允许使用Ajax请求头域

前端之家收集整理的这篇文章主要介绍了Access Control-Allow-Headers不允许使用Ajax请求头域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试构建一个DNN服务框架WebAPI,但是我在使用CORS时遇到麻烦.我有所有适当的标题(我想),但仍然似乎没有工作.

错误

XMLHttpRequest cannot load http://www.dnndev.me/mysite/builder/API/echo?message=Hello+World&_=1412707749275. Request header field Key is not allowed by Access-Control-Allow-Headers.

请求标题

Remote Address: 127.0.0.1:80
URL: http://www.dnndev.me/mysite/builder/API/echo?message=Hello
Request Method: OPTIONS
Status Code: 200 OK
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Access-Control-Request-Headers: accept,key
Access-Control-Request-Method: GET
Connection: keep-alive
Host: www.dnndev.me
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/37.0.2062.124 Safari/537.36

回应标题

Access-Control-All-Headers: Origin,X-Requested-With,Content-Type,Accept,Key
Access-Control-Allow-Methods: *
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Content-Length: 13
Content-Type: application/json; charset=utf-8
Date: Tue,07 Oct 2014 18:49:10 GMT
Expires: -1
Pragma: no-cache
Server: Microsoft-IIS/7.5

一般来说,这个错误是由于在“访问控制全标题”中没有适当的标题引起的.但是,我正在发送正确的响应以允许ajax继续请求.它只是拒绝.

这是我的ajax调用方法

$.ajax({
    type: 'GET',url: 'http://www.dnndev.me/mysite/builder/API/echo',dataType: 'json',data: { message: 'Hello' },crossDomain: true,headers: { 'Key': 'Bearer 7680ff6e-1362-4236-a9cd-c6bc8b6f13ea' },success: function (result) { console.log(result); }
});

可能是显而易见的,但这只会发生在跨域请求上,只有当我包含自定义标题(因此指示ajax才能做一个OPTIONS).

您的服务器使用以下自定义标头对预检要求进行响应:
Access-Control-All-Headers: Origin,Key

而如果你(或写这个服务器的人)仔细阅读CORS,他应该回答:

Access-Control-Allow-Headers: Origin,Key

现在,客户端客户端可以继续使用Key自定义标头.

据说,承载对于在授权标题中发送的OAuth 2是非常具体的.使用钥匙似乎是一个可怕的违反RFC和东西,并有一个轮子改造.

猜你在找的Ajax相关文章