0
我尝试使用Chrome(最新版本)执行跨域请求,并且针对POST的Web API操作首先由使用OPTIONS动词的chrome协商。使用jQuery 2.1,我设置了$.support.cors =true
和ajax请求属性crossDomain: true
。在我的web.config我已经设置:Asp.Net Web Api请求返回405
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, OPTIONS" />
</customHeaders>
</httpProtocol>
而且,我已经安装了MS最新的NuGet包该项目,并调用config.EnableCors()
的WebApiConfig.Register方法内。
下面是正在发送的请求:
OPTIONS /visitorservice/api/Visitor/PostNewSession/account/4/site/1000 HTTP/1.1
Host: mg.mycompany.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36
Access-Control-Request-Headers: accept, x-mycompanyvisitor, content-type
Accept: */*
DNT: 1
Referer: http://localhost/test2.htm
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
并且在下面的反应。
HTTP/1.1 405 Method Not Allowed
Cache-Control: no-cache
Pragma: no-cache
Allow: POST
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Date: Wed, 05 Mar 2014 15:59:38 GMT
Content-Length: 76
我在想什么?其他线程似乎指的是WebDav问题,但没有安装在我的IIS上。
嗨,你可以提供更多的细节请你做出的改变? – Remotec