0

我是一名新的 Web 开发人员,但我遇到了我认为相当常见的情况。

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

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

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

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

发出 JSONP 请求

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

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

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

其他选择?

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

4

1 回答 1

0

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

于 2013-12-17T07:21:02.660 回答