我一直在关注如何设置我的网站以允许跨站点脚本请求的Mozilla文章.使用IIS管理器我添加了以下HTTP响应标头
Access-Control-Allow-Origin : *
Access-Control-Allow-Headers : Origin, SecurityPrivateKeyID
Access-Control-Allow-Methods : GET, POST, PUT, DELETE, OPTIONS
Run Code Online (Sandbox Code Playgroud)
尽管如此,我仍然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
Run Code Online (Sandbox Code Playgroud)
响应
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
Run Code Online (Sandbox Code Playgroud)
直接访问时服务正常http://serviceprovider.com/Service/Json/User.svc/.
关于我做错了什么的任何想法?
[注意我已将主机文件更改为指向我的机器上的client.com和serviceprovider.com]
[使用JSONP的解决方案不会这样做,因为我的Web服务必须能够使用POST,PUT和DELETE方法]
Kev*_*don 22
我的IIS 8实例是全新安装,似乎我需要对其进行一些修改 Handler Mappings
如果任何建议的更改破坏了您现有的网站,最好备份applicationhost.config文件
C:\Windows\System32\inetsrv\configapplicationhost.config作为起点,我删除了所有未使用的Handler映射以减少问题空间.您可以通过applicationhost.config直接修改或使用IIS管理器来执行此操作
我的网站是基于大量的服务,仅仅依靠静态文件和文件具有.aspx和.svc文件扩展名.我还手动删除了.NET 2.0整个配置文件中的所有引用.
这似乎是修复.
Add Module MappingAdd Module Mapping对话框中使用以下值.
Request path - *Module - ProtocolSupportModuleExecutable - [留着空白]Name - [任何你想要的]Request Restrictions
Mapping标签中,unckeckInvoke handler only if request is mapped toVerbs选项卡中,确保OPTIONS已选中Access选项卡中选择Script我生成的Handlers配置如下所示
<handlers accessPolicy="Read, Script">
<add name="OPTIONS" path="*" verb="OPTIONS" modules="ProtocolSupportModule" resourceType="Unspecified" />
<add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" />
<add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15917 次 |
| 最近记录: |