Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跨来源域代理的优点/缺点?_Javascript_Ajax_Jquery_Jsonp - Fatal编程技术网

Javascript 跨来源域代理的优点/缺点?

Javascript 跨来源域代理的优点/缺点?,javascript,ajax,jquery,jsonp,Javascript,Ajax,Jquery,Jsonp,我目前正努力考虑是否创建一个跨源请求代理 我有一个与API交互的jQuery应用程序,在初始页面加载时至少向该服务器发出4个请求。这两台服务器都完全在我的控制之下,但它们位于不同的子域上。出于这个原因,我一直倾向于使用JSONP绕过跨源请求策略 然而,我确实错过了一个特别的特性:获取请求的HTTP状态码。JSONP+jQuery的工作方式是,请求工作还是不工作。如果没有,我将为请求指定一个超时,如果达到该超时,我将假设失败(没有其他方法知道)。我真的希望能够响应API服务器的404对500错误

我目前正努力考虑是否创建一个跨源请求代理

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

然而,我确实错过了一个特别的特性:获取请求的HTTP状态码。JSONP+jQuery的工作方式是,请求工作还是不工作。如果没有,我将为请求指定一个超时,如果达到该超时,我将假设失败(没有其他方法知道)。我真的希望能够响应API服务器的404对500错误

这让我想到本地代理可能工作得更好,但它会占用服务器端资源(保存jQuery应用程序+Sinatra应用程序的服务器),而不是客户端资源(浏览器)。当每个页面加载4+个对API服务器的请求时,这肯定会增加,即使它不会阻止应用程序加载


我理解这不是一个真正的“问题”-因此,如果不合适,请随时标记/关闭它。然而,我真的很想在这个问题上得到一些意见。我通过在Ruby中开发一个本地代理引入了一些复杂性。

我坚持使用JSONP和子域之间的直接通信


另外,你可能想退房。iFrame不受子域间限制。只要两个子域都属于同一个顶级域,它们就可以通信。

JSONP有一些限制,并且不是您唯一的选择。既然您控制了这两个域,您是否考虑过使用CORS?如果没有,请查看:


您可以在这里阅读关于JSON-p与CORS的内容:

我为您的问题更改了标记;它与ruby或RubyonRails没有任何关系。已经很晚了,你说得对!很抱歉,我很想使用CORS,但IE7中缺乏支持是目前的一大障碍。如果是这样,为什么不将响应代码与json响应一起传递回去呢?如果您没有得到响应,那么很有可能服务器端出现问题,您的代码将是500。如果这还不够,那么代理可能对您更合适。希望随着IE7使用的减少,这对您来说不再是一个问题。