跨域域代理的好处/缺点?

时间:2012-07-25 03:06:56

标签: javascript ajax jquery jsonp

我现在正在努力创建一个跨源请求代理。

我有一个与API交互的jQuery应用程序,在初始页面加载时至少向该服务器发出4个请求。两台服务器完全由我控制,但它们位于不同的子域中。出于这个原因,我一直在努力使用JSONP来绕过跨源请求策略。

但是,我特别错过了一个功能:获取请求的HTTP状态代码。 JSONP + jQuery的工作方式,请求有效,或者它没有。如果它没有,我指定请求的超时,如果达到超时,我认为失败(没有办法知道其他情况)。我真的希望能够从API服务器响应404和500错误。

这让我认为本地代理可能会更好 - 但它会占用服务器端资源(拥有jQuery应用程序的服务器+ Sinatra应用程序)而不是客户端资源(浏览器)。当每个页面加载对API服务器的请求超过4个时,这肯定会加起来,即使它不会阻止应用程序加载。

我明白这不是一个真正的问题" - 如果不合适,请随意标记/关闭它。但是,我真的很想就这个问题得到一些意见。我通过在Ruby中开发本地代理来介绍一些复杂性。

2 个答案:

答案 0 :(得分:1)

我坚持使用JSONP以及子域之间的直接通信。

另外,您可能需要查看(hacky) methods of using iframes for communication。 iframe不受子域间限制。只要两个子域都属于同一个顶级域,他们就可以进行通信。

答案 1 :(得分:0)

JSONP有一些限制,并不是您唯一的选择。既然您控制了两个域,您是否考虑过使用CORS?如果没有,请查看:http://www.html5rocks.com/en/tutorials/cors/

您可以在此处阅读有关JSON-P与CORS的内容:http://json-p.org/