CORS-是否需要webconfig和asax.cs文件以避免错误?

时间:2019-07-15 19:44:23

标签: c# asp.net cors preflight

错误: 从源“ http://localhost:7078/websync.ashx?token=1&src=js&AspxAutoDetectCookieSupport=1”对“ http://localhost:4200”处XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:“ Access-Control-Allow-Origin”标头包含多个值'http://localhost:4200,*',但只允许一个。

目标: 能够将变量从SiteA发送到SiteB。

(SiteB托管出现在SiteA上的iframe。SiteA托管有角度的和asp.netwebapi。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="*" />

1 个答案:

答案 0 :(得分:0)

我相信您在服务器的响应中缺少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允许飞行前工作的方法之一。