K. *_*tes 7 iis cors asp.net-web-api iis-8.5
所以我继续修补这个.这是一个带有IIS 8.5的新Windows Server.我从来没有遇到任何问题让CORS在IIS中"正常工作",所以我从来没有真正需要关心服务器配置中的繁琐位.立即解决的问题是猎枪方法; 我通过对applicationhost.config进行以下修改来启用服务器范围内的CORS
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
但删除此customHeader并[EnableCors(origins: "*",headers: "*", methods: "*")]
在我的控制器内设置不会导致服务器发回Access-Control-Allow-Origin
响应标头(是的,我确保调用config.EnableCors()
我的HttpConfiguration
.
另一个复杂因素是使用这种方法,我必须允许所有来源,因为我需要几个来源才能访问此服务器.浏览器实现不允许在此标头中从服务器发回多个源.我总是可以EnableCors
在我的应用程序中编写自己的逻辑,但宁愿理解并修复服务器配置以保留在res上.
所以我试图在我们的服务器配置团队直接在新的Windows Server 2012 R2上部署到IIS 8.5的Web应用程序上遇到了一些问题.我的应用程序是一个启用了Cors的Web API(目前允许所有来源),但服务器没有向调用客户端返回Access-Control-Allow-Origin标头.我从未遇到过Web API Cors"只是工作"的问题.
我找到了这个资源,但确认OPTIONSVerbHandler已经在我的应用程序的web.config中删除了.
我尝试将一个customHeader添加到IIS,但每当我这样做时,服务器开始返回500秒.
有什么办法可以强制 IIS 8.5从ASP.NET发送Access-Control-Allow-Origin标头吗?
所以我显然在我的解决方案中安装了ASP.NET Cross Origin Resource Sharing NuGet包,而不是ASP.NET Web API 2.2跨源资源共享NuGet包.我把这些换掉了,我的CORS功能有限(但仍然是意外的).我将描述我现在遇到的奇怪现象.
所以在我意识到我有错误的NuGet包之前,我已经进入了applicationHost.config并添加了
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
试图让服务器手动推回头.如果没有的NuGet更新,这并没有设置页眉上预检反应,但在这一点上我不太知道这是因为我忘了一个IISRESET;我试图快速移动.
无论如何,当我添加Web API 2.2 Cors
NuGet包时,我的服务器响应开始发出Access-Control-Allow-Origin
带有通配符源的头,而不是我在Web API路由中的EnableCors属性中设置的头.因此,使用该值,我知道它是配置的customHeader,而不是EnableCorsAttribute
现在控制值.
(这里是奇怪的地方)所以我真的更喜欢能够直接在服务器级别直接控制CORS白名单,所以我继续将customHeader设置为
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://segment.mydomain.com" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
其中http://segment.mydomain.com
也匹配我的API路径中允许的一个来源.
我现在Access-Control-Allow-Origin
从PreFlight请求中的IIS发回正确的,但后续POST返回500.如果我EnableCors
从Api Route中删除该属性,则POST成功(通过直接查询保留发布数据的数据库确认)
...重量*?
因此,这种有希望的方法(在IIS中的customHeader中静态定义的起源而不是允许开发人员直接在控制器中列出其起源)实际上不起作用.我需要将多个来源列入白名单,Chrome的实现只允许在ACAO标题中设置一个来源.它也不允许在原点中使用通配符段,所以......太糟糕了.
归档时间: |
|
查看次数: |
3761 次 |
最近记录: |