您将需要在您的主 MVC4 应用程序中创建一个瘦代理层,用于创建HttpRequest
或WebClient
调用您的 WebAPI 项目。
所以你的Javascript会调用类似的东西
http://samedomain/proxy/getproduct/29
然后,您的 ProxyController 的 GetProduct 操作应该对实际的 WebAPI URL 进行 HttpRequest 调用
http://otherdomain/api/Product/29
并将其JsonResult
返回给调用 Javascript,然后您可以在其中使用它。因为您的 Javascript 和代理层在同一个域中,所以您不会面临源访问策略问题。
编辑:即使您在 localhost 上同时拥有它们但具有不同的端口,就浏览器而言,这也算作一个单独的域。从 localhost:41928 到 localhost:58128 的调用将受此安全策略的约束。如果你想解决这个问题,那么你需要将你的 MVC WebAPI 放在你的主项目中。要结合这两个项目,请创建一个新的 MVC WebAPI 项目 - 它带有服务路由以及常规 MVC 路由。
如果您想要一个真正“开放”的 WebAPI 服务,您可以按照本指南启用 CORS。在 IIS7 中,您可以将其添加到您的 web.config 文件中
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>