我一直在关注关于如何设置我的网站以允许跨站点脚本请求的Mozilla 文章。使用 IIS 管理器,我添加了以下 HTTP 响应标头
Access-Control-Allow-Origin : *
Access-Control-Allow-Headers : Origin, SecurityPrivateKeyID
Access-Control-Allow-Methods : GET, POST, PUT, DELETE, OPTIONS
尽管如此,405 Method Not Allowed
当我的浏览器(Firefox 和 Chrome)发送带有自定义SecurityPrivateKeyID
标头的飞行前请求时,我仍然会收到错误消息。
要求
OPTIONS /Service/Json/User.svc/ HTTP/1.1
Host: serviceprovider.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://client.com
Access-Control-Request-Method: GET
Access-Control-Request-Headers: securityprivatekeyid
Connection: keep-alive
回复
HTTP/1.1 405 Method Not Allowed
Allow: GET
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/8.0
access-control-allow-origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Origin, SecurityPrivateKeyID
Date: Sat, 23 Mar 2013 08:35:03 GMT
直接访问时,该服务运行良好http://serviceprovider.com/Service/Json/User.svc/
。
关于我做错了什么的任何想法?
[请注意,我已将主机文件更改为在我的机器上指向 client.com 和 serviceprovider.com]
[使用 JSONP 的解决方案不行,因为我的 Web 服务必须能够使用 POST、PUT 和 DELETE 方法]