使用SproutCore跨域请求服务



我一直在努力解决这个问题,但没有成功。

我有一个web应用程序驻留在我的域,说www.myDomain.com。我需要调用另一个域上的服务,比如www.anotherDomain.com/service.do?

我使用SproutCore的SC.Request.getUrl(www.anotherDomain.com/service.do?)来调用该服务。

我得到一个错误,说,原点www.myDomain.com是不允许访问-控制-允许-原点。

当我在开发阶段,并使用sc-server,这个问题是通过代理解决的。现在我已经将应用程序部署到一个实际的服务器上,我用实际的域名替换了我设置代理的所有行。我又开始出现这个错误了

问题是我不能对其他域的服务器进行任何更改。我遇到的所有帖子都表明,另一个域上的另一个服务器应该提供access-control-allow-origin标头,并且它应该支持OPTIONS动词。

我的问题是,我是否可以使用SproutCore的SC.Request.getUrl()方法连接到该服务?

此外,我读过的其他帖子提到,一个简单的GET请求不应该被预先处理。为什么我的请求是OPTION而不是GET ?

提前非常感谢!: D

这不是Sproutcore的问题;这是一个javascript同源策略问题。

如果您不能修改生产服务器,那么您别无选择,只能开发自己的代理服务器,并让您的代理访问实际服务。

这有效地取代了生产环境中的sc-server。

该服务器所做的就是接收传入的请求并将其传递给www.anotherDomain.com/?service.do

你需要确保你传递了所有的参数,cookie,报头,http动词等....

这远不是理想的,因为现在错误可能发生在更多的地方。真正的服务失败了吗?代理失败了吗?等。

如果你可以修改其他域,你可以

1)在那里部署你的SC应用。
2)放入CORS标头,以便您可以跨域请求

相关内容

  • 没有找到相关文章

最新更新