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: &lt;add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" /&gt; //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 错误

spring boot Cors 跨域

如何在IIS / Azure中单独部署webconfig更改?

CORS 授权聚合物和goapp golang

一种Webconfig自动化升级方法