跨站点 JSON 请求是否有标准模式



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

我在 www.mysite.com 有一个网站(从本地主机测试),客户端正在从我 data.mysite.com 托管的 REST 服务(实时服务,不使用测试版本)请求 JSON 对象。 我使用 JQuery 的 $.ajax() 函数发出此请求。 当我尝试此操作时,我收到一条通知(在 chrome 中),我需要响应标头来包含此域(本地主机)的访问控制允许源配置。

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

将访问控制允许源标头信息添加到 HTTP 响应。

我不喜欢这个,因为它与浏览器无关,而且随着标准的发展,也可能是一个维护痛苦点。

发出 JSONP 请求

这似乎是一个标准答案,但它似乎与 REST 服务模式不太吻合,并且来自系统工程/桌面应用程序开发平台,感觉像是一个肮脏的黑客。

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

让服务器代表我发出请求有两个主要问题。 一个是它将一个异步延迟诱导调用转换为两个。 另一个是,如果 REST 服务的 API 发生变化,我可能不得不相应地改进本地实现,这意味着维护工作量是原来的两倍。

其他选择?

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

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

最新更新