CORS - 我需要 webconfig 和 asax.cs 文件来避免错误吗?
Posted
技术标签:
【中文标题】CORS - 我需要 webconfig 和 asax.cs 文件来避免错误吗?【英文标题】:CORS - Do I need both webconfig and asax.cs file to avoid error? 【发布时间】:2019-11-24 12:58:03 【问题描述】:错误: 从源“http://localhost:4200”访问“http://localhost:7078/websync.ashx?token=1&src=js&AspxAutoDetectCookieSupport=1”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头包含多个值“ http://localhost:4200, *',但只允许一个。
目标: 能够将变量从 SiteA 发送到 SiteB。
(SiteB 托管一个出现在 SiteA 上的 iframe。SiteA 托管 angular 和 asp.net webapi。SiteB 是聊天服务器)
这些是当前设置。我需要 web.config 和 global.asax.cs 文件吗?从我的设置中具体导致上述错误的原因是什么? 据我了解,当它设置在多个地方时会发生这种情况。 是否在 web.config 和 asax.cs 中有它导致该问题?
我已经阅读了很多关于 HttpResponse 和 CORS 的文档,但我觉得我在这里遗漏了一些内容:
SiteA\Web.config:
<add name="Access-Control-Allow-Origin" value="*" />
SiteA\Global.asax.cs:
response.AddHeader("Access-Control-Allow-Headers", "access-control-allow-origin,accept,x-api-applicationid,content-type,authorization");
SiteB\Web.config:
<add name="Access-Control-Allow-Origin" value="*" />
【问题讨论】:
你使用的是 MVC 还是 web api? WebAPI。 ***.com/a/10892392/11187561 是说这不能在我的虚拟机上的本地主机上完成? 在您的 webapiconfig 中将此行添加到注册方法 config.EnableCors(); 【参考方案1】:我相信您在服务器的响应中缺少Access-Control-Allow-Methods
。虽然 CORS 请求通常不需要,但我相信预检类型 CORS 请求需要标头,例如https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
将此标头添加到您的 web.config:
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" /> //limit this to methods you want to allow CORS on
您应该看到您的预检请求正在发送 Access-Control-Request-Method
,这应该是 Access-Control-Allow-Methods
允许的方法之一,以便预检工作。
【讨论】:
以上是关于CORS - 我需要 webconfig 和 asax.cs 文件来避免错误吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JBoss AS 上使用 java RESTful Web 服务启用 CORS
VB.NET Web API CORS PUT 预检 405 错误