Ajax 使用SproutCore的跨域服务请求

Ajax 使用SproutCore的跨域服务请求,ajax,xmlhttprequest,cross-domain,sproutcore,Ajax,Xmlhttprequest,Cross Domain,Sproutcore,我一直试图解决这个问题,但没有成功 我的域名上有一个webapp,比如www.myDomain.com。我需要调用另一个域上的服务,例如www.anotherDomain.com/service.do 我正在使用SproutCore的SC.Request.getUrlwww.anotherDomain.com/service.do?打那个电话 我得到一个错误,上面写着,访问控制不允许来源www.myDomain.com允许来源 当我处于开发阶段,使用sc server时,这个问题是通过代理解决的

我一直试图解决这个问题,但没有成功

我的域名上有一个webapp,比如www.myDomain.com。我需要调用另一个域上的服务,例如www.anotherDomain.com/service.do

我正在使用SproutCore的SC.Request.getUrlwww.anotherDomain.com/service.do?打那个电话

我得到一个错误,上面写着,访问控制不允许来源www.myDomain.com允许来源

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

问题是我无法对另一个域上的服务器进行任何更改。我遇到的所有帖子都指出,另一个域上的另一个服务器应该提供访问控制allow origin头,并且应该支持选项动词

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

此外,我读过的其他帖子提到,不应该预先触发一个简单的GET请求。那么为什么我的请求是作为选项而不是GET


提前多谢!:这不是一个核心问题;这是一个javascript同源策略问题

如果您不能修改生产服务器,那么您别无选择,只能开发自己的代理服务器,并让您的代理运行真正的服务

这将有效地取代生产环境中的sc服务器

此服务器只需接收传入请求并将其传递到www.anotherDomain.com/?service.do

您需要确保传递了所有参数、cookie、头、http谓词等

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

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

1在那里部署您的SC应用程序。
2放入CORS头文件,这样您就可以进行跨域请求了。我会试试看,看情况如何。关于设置代理有什么建议吗?我以前从未这样做过。这取决于您选择的服务器技术。只要搜索一下开发代理服务器,就会有很多例子。我们通过创建一个JSP页面来解决这个问题,该页面实际调用服务并获取XML。SproutCore应用程序现在调用同一域中的JSP页面,JSP向外部服务发出调用:谢谢你的帮助,因为代理是唯一的办法请记住,您需要传递所有请求数据,如cookie、标头、参数等。。。