【问题标题】:Call JavaScript function from remote server从远程服务器调用 JavaScript 函数
【发布时间】:2011-03-22 10:12:44
【问题描述】:

我试图从另一台服务器(服务器 2)调用一些服务器(服务器 1)上存在的 JavaScript 函数,我得到了这个错误:

不安全的 JavaScript 尝试从 URL 为 https://server2/ 的框架访问 URL 为 https://server1/ 的框架。域、协议和端口必须匹配。

我用过JSP、Java、JavaScript和tomcat7,有什么办法可以解决这个问题吗?任何帮助将不胜感激。

【问题讨论】:

  • 为什么要这样做?如果您只需要来自其他服务器的一些数据,则可以使用 ajax。
  • 你试图在 iframe 中调用 JS 函数?我理解正确吗?
  • 为什么不将远程服务器的 .js 文件包含到服务器的 servlet 中?

标签: javascript same-origin-policy


【解决方案1】:

是的,必须在您的 javascript 文件的标头中添加一个跨域规则,以允许从您的其他服务器进行访问。

否则,您的浏览器不允许您这样做。

你可以看看这个问题的答案:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

它应该告诉你怎么做。

【讨论】:

  • 感谢您的回答,我尝试将其放在标头中 response.addHeader("Access-Control-Allow-Origin","*");但它并没有解决问题。我该如何添加它?请问有什么有用的链接吗?
  • 这仅适用于启用 CORS(跨域资源共享) - 不适用于启用窗口之间的跨域访问。
【解决方案2】:

看看easyXDM - 它提供了一个 RPC 功能,允许您跨 Same Origin Policy 调用方法。

看看其中一个演示的here

【讨论】:

    【解决方案3】:

    如上所述,您必须遵守同源政策,该政策旨在保护用户。 谷歌写得很好:http://code.google.com/p/browsersec/wiki/Part2

    有几种典型的解决方法:

    1. jquery 具有 getJson 或 jsonp 类型的函数。大多数其他 js 库都有类似的东西。它们使用动态 Script 标签,适用于来自其他域的 GET 请求。
    2. 在 domain1 上创建一个代理到 domain2 的 servlet - 允许不受限制的 HTTP 方法和使用 XmlHTTPRequest。

    我没试过http://easyxdm.net/wp/

    会有一些改进,比如HTML5 中的跨文档消息传递

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-25
      • 2010-11-02
      • 2018-10-19
      • 2011-12-09
      • 2016-01-15
      • 2011-07-01
      • 2023-02-02
      • 2013-08-08
      相关资源
      最近更新 更多