CORS - 我是否需要同时使用 webconfig 和 asax.cs 文件来避免错误?



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

目标:能够将变量从站点 A 发送到站点 B。

(SiteB 托管显示在 SiteA 上的 iframe。SiteA托管角度和 asp.net webapi。站点B是聊天服务器)

这些是当前设置。我是否需要 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="*" />

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

最新更新