是否存在跨站点JSON请求的标准模式?

时间:2013-09-13 18:44:37

标签: jquery cross-domain

我是一名新的网络开发人员,但我遇到了我认为相当普遍的情况。

我在www.mysite.com上有一个网站(从localhost测试),客户端正在从我在data.mysite.com上托管的REST服务请求一个JSON对象(实时服务,不使用测试版本)。我正在使用JQuery的$ .ajax()函数发出此请求。当我尝试这个时,我得到一个通知(在chrome中)我需要响应头来包含该域的local-Control-Allow-Origin配置(localhost)。

我做了一些挖掘并了解有几种方法可以解决这个问题。我想知道哪一个对我最有意义。

将Access-Control-Allow-Origin标头信息添加到HTTP响应中。

我不喜欢这个,因为它不是浏览器不可知的,并且随着标准的发展也可能成为维护点的痛苦。

发出JSONP请求

这似乎是一个标准的答案,但它看起来不像是与REST服务模式很好地对齐,来自系统工程/桌面应用程序开发平台,感觉就像一个肮脏的黑客。

通过本地域路由所有异地请求

让服务器代表我提出请求有两个主要问题。一个是它将一个异步延迟诱导调用变为两个。另一个是,如果API更改为REST服务,我可能必须相应地改进本地实现,这意味着维护的两倍。

其他选项?

我真诚地希望StackOverflow有其他想法或建议来处理这种情况,因为这种形式的跨站点请求的想法似乎很常见,但我理解开放的安全含义客户端对这种跨站点调用的依赖性。

1 个答案:

答案 0 :(得分:0)

我最终选择加入这两个域(因为我拥有两个域)并在本地托管。话虽这么说,CORS,似乎是最好的方式,但它仍然是新的,所以你的里程可能会有所不同。此外,根据我的第三个建议创建一个代理是非常可行的,但当然有一些警告。