【发布时间】:2012-04-02 12:39:24
【问题描述】:
我们最近一直在开发一个相当现代的网络应用程序,并准备将其部署为 alpha/beta 版并获得一些实际体验。
我们有基于 ASP.Net 的 Web 服务 (Web Api) 和一个 JavaScript 前端,它是 100% 使用主干的客户端 MVC。
我们已经购买了我们的域名,为了这个问题,我们的部署如下所示:
webservices.mydomain.com(网络服务)
mydomain.com(JavaScript 前端)
如果 JavaScript 尝试与子域上的 web 服务通信,我们会遇到跨域问题,我已经玩过 CORS,但对跨浏览器支持不满意,所以我把它算作一个选项。
在我们的开发 PC 上,我们使用 IIS 反向代理将所有对 mydomain.com/webservices 的请求转发到 webservices.mydomain.com - 这解决了我们的所有问题,因为浏览器认为所有内容都在同一个域中。
所以我的问题是,在公共部署中,这个问题最常如何解决?反向代理是正确的方法吗?如果是这样,是否有任何托管服务为这种情况提供反向代理?有没有更好的部署方法?
我想使用 CloudFront CDN,因为我们所有的服务器/服务都由 Amazon 托管,但我真的很难找到有关 CDN 是否可以支持这种设置的信息。
谢谢
【问题讨论】:
-
也许我个人的实现太简单了(如果是这样我也会对其他人的 cmets 感兴趣)。我想缺少的是您在前/后之间的数据传输是什么?在我的简单实现中,前端通过 JSONP 与后端(WCF 服务)通信,实现“真正的”跨域实现。如果我需要“代理”,那么它是一个“应用代理”——mydomain.com 的前端将与 mydomain.com 上的处理程序(即 ashx)对话,该处理程序将 http 请求“代理”到 myotherdomain.com 上的 WCF。跨度>
-
您使用的是 JQuery 还是纯 javascript? (如果是 JQuery,你可以使用这个:usejquery.com/posts/the-jquery-cross-domain-ajax-guide)
-
对于 WebAPI,您可以查看这篇关于使用 JSONP 启用 CORS 的帖子,它应该可以在浏览器中正常工作 goo.gl/KjT6y
标签: asp.net web-services cross-domain