ajax - 使用SproutCore的跨域服务请求

标签 ajax xmlhttprequest cross-domain sproutcore

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

我的域中有一个webapp,说www.myDomain.com。我需要调用另一个域上存在的服务,例如www.anotherDomain.com/service.do?
我正在使用SproutCore的SC.Request.getUrl(www.anotherDomain.com/service.do?)调用该服务。

我收到一条错误消息,指出access-control-allow-origin不允许使用Origin www.myDomain.com

在开发阶段并使用sc-server时,使用代理解决了该问题。现在,我已经将应用程序部署到了实际的服务器上,我用实际的域名替换了设置代理服务器的所有行。我已经开始再次收到该错误。

问题是我无法对其他域上的服务器进行任何更改。我遇到的所有帖子都指出,另一个域上的其他服务器应该提供access-control-allow-origin header ,并且应该支持OPTIONS动词。

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

另外,我阅读过的其他文章提到,不应对简单的GET请求进行预检。为什么我的请求以OPTION而不是GET的形式发送?

在此先感谢一吨! :D

最佳答案

这不是Sproutcore的问题。这是一个JavaScript同源政策问题。

如果您无法修改生产服务器,则别无选择,只能开发自己的代理服务器,并让代理访问真正的服务。

这有效地替代了生产环境中的sc服务器。

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

您需要确保传递了所有参数,Cookie,标题,http动词等。

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

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

1)在此处部署您的SC应用程序。
2)放入CORS header ,以便您可以进行跨域请求

关于ajax - 使用SproutCore的跨域服务请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8335420/

相关文章:

javascript - rails 3.1 : The new way to use 'respond_to ... format.js' without the 'page' variable

javascript - innerHTML 大小限制

javascript - 在没有绑定(bind)的情况下处理 javascript 类/库中的异步事件

javascript - 由于响应中不存在 `Access-Control-Allow-Origin` header ,跨域请求停止工作

javascript - 跨域 jQuery ajax 调用不起作用

javascript - 我应该担心 "SecurityError: Permission denied to access property on cross-origin object"日志吗

javascript - 如何检测多个 AJAX 请求何时完成或失败?

javascript - 进行 ajax 调用后调用方法时出现问题

php - 使用 AJAX 检索 HTML 下拉列表值

javascript - 使用 XMLHttpRequest 发送图像并使用 php 抓取