CORS 政策问题刚刚开始,没有代码更改 - "CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values"
CORS policy issue just started with no code changes - "CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values"
大家好,我遇到了一个奇怪的 CORS 政策问题...我想知道是否有人见过这样的事情,我应该如何解决这个问题???
这是 CORS 问题:
Access to XMLHttpRequest at 'https://myservice.dev.mycompany.com/api/SSO/SSOProfile' from origin 'https://myapp.dev.mycompany.com' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://myapp.dev.mycompany.com, https://myapp.dev.mycompany.com', but only one is allowed.
Chrome 开发工具中的响应 header 中的多个(重复)值是:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
我们为 cors 属性启用的来源是 https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com
"myotherapp" 在这种情况下不相关,因为我们只是尝试登录,而 "myotherapp" 用于较少使用的功能。
这是奇怪的地方:
- 从上次运行到崩溃之间没有部署任何代码。
- 它只发生在我们的开发环境中。相同的代码库 运行 在本地、测试、阶段和生产中都很好。
- 我什至试过 re-deploying,重新启动应用程序池,然后弹跳两者(加载
平衡)开发服务器。
- 我不知道开发箱上有任何网络更改、服务器补丁或 IIS 更改。
这种情况使我相信它与代码无关,而是与环境有关——IIS、负载平衡器或网络。我主要编写代码,所以我很难追踪到这一点。我已经和一些基础架构团队成员讨论过了,但我们仍然没有弄清楚。
有什么想法吗??谢谢!
这是 WebApiConfig class,我们没有在配置中定义 CORS 自定义 header,只有应用程序设置的来源(见下面的代码)。就像我说的,这个错误在没有任何新代码部署的情况下弹出。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
/*
* from web.Dev.config
* <add key="corsAttribute" value="https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
*/
var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["corsAttribute"], "*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Unspecified;
}
}
找到了;固定它!我希望这可以帮助将来的人...
在 F5 负载均衡器上,有人将 dev.mycompany.com 添加到与 myapp.dev.mycompany.com 相同的 VIP。当他们这样做时,他们还添加了一个规则来说明允许来源,但我们的应用程序在 code/config 中这样做,所以有多个。他们放弃了规则,打算给 dev.mycompany.com 它自己的 VIP。制作了好几天!!
大家好,我遇到了一个奇怪的 CORS 政策问题...我想知道是否有人见过这样的事情,我应该如何解决这个问题???
这是 CORS 问题:
Access to XMLHttpRequest at 'https://myservice.dev.mycompany.com/api/SSO/SSOProfile' from origin 'https://myapp.dev.mycompany.com' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://myapp.dev.mycompany.com, https://myapp.dev.mycompany.com', but only one is allowed.
Chrome 开发工具中的响应 header 中的多个(重复)值是:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
我们为 cors 属性启用的来源是 https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com
"myotherapp" 在这种情况下不相关,因为我们只是尝试登录,而 "myotherapp" 用于较少使用的功能。
这是奇怪的地方:
- 从上次运行到崩溃之间没有部署任何代码。
- 它只发生在我们的开发环境中。相同的代码库 运行 在本地、测试、阶段和生产中都很好。
- 我什至试过 re-deploying,重新启动应用程序池,然后弹跳两者(加载 平衡)开发服务器。
- 我不知道开发箱上有任何网络更改、服务器补丁或 IIS 更改。
这种情况使我相信它与代码无关,而是与环境有关——IIS、负载平衡器或网络。我主要编写代码,所以我很难追踪到这一点。我已经和一些基础架构团队成员讨论过了,但我们仍然没有弄清楚。
有什么想法吗??谢谢!
这是 WebApiConfig class,我们没有在配置中定义 CORS 自定义 header,只有应用程序设置的来源(见下面的代码)。就像我说的,这个错误在没有任何新代码部署的情况下弹出。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
/*
* from web.Dev.config
* <add key="corsAttribute" value="https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
*/
var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["corsAttribute"], "*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Unspecified;
}
}
找到了;固定它!我希望这可以帮助将来的人...
在 F5 负载均衡器上,有人将 dev.mycompany.com 添加到与 myapp.dev.mycompany.com 相同的 VIP。当他们这样做时,他们还添加了一个规则来说明允许来源,但我们的应用程序在 code/config 中这样做,所以有多个。他们放弃了规则,打算给 dev.mycompany.com 它自己的 VIP。制作了好几天!!