错误: 从源“ 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="*" />
答案 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
允许飞行前工作的方法之一。