1

我用两个 ASP.NET Web 应用程序、一个 MVC 应用程序和一个 Web API 创建了一个新的解决方案。

我想使用子域访问 api,api.hybridwebapp.com/values所以我实现了 IHttpRouteConstraint 以确保request.RequestUri.Host == "api.mydomain.com"所有 Api 路由。此答案中的更多详细信息

然后我将以下行添加到我的主机文件中:

127.0.0.1    hybridwebapp.com  api.hybridwebapp.com

在 IIS 管理器中,我创建了 2 个网站(每个项目一个)并为每个网站设置了适当的绑定(80 上的 hybridwebapp.com 和 80 上的 api.hybridwebapp.com)

在项目的 Web 属性中,我在每个网站的根目录下设置了一个本地 IIS 虚拟目录:

MVC 项目网址: http://hybridwebapp.com

Web API 项目网址:http://api.hybridwebapp.com

我在 MVC 应用程序中创建了一个单击处理程序以向 Web Api 发出跨域请求,尽管我从未在 Web Api 上实际配置任何 Cors 属性,但它成功地实现了它。

这是一种误导,因为这显然会在生产中失败。我该怎么做才能使这更现实..我实际上想调整 CORS 配置以具有更严格的范围,但是当它接受所有请求时我不能这样做,即使是那些应该失败的..

4

1 回答 1

1

跨子域请求仍然被认为是跨域请求,因为不同的子域可以指向完全不同的 IP 和服务器。如果您没有在生产设置中正确设置 CORS,您肯定会遇到错误。

编辑:要正确模拟生产设置,您需要使用IIS 绑定配置。如果你不能让它工作,你应该尝试一个虚拟机来托管 api.hybridwebapp.com,它肯定会工作,因为 CORS 在不同的服务器之间自动触发。

于 2013-07-13T13:49:26.297 回答