0

我正在开发一个 JavaScript API 服务。主 html 页面如下所示:

<html>
<head>
  <script type="text/javascript" src="scripts/logic.js"></script>
  <script type="text/javascript" src="scripts/jquery-1..."></script>
  <script type="text/javascript" src="http://mydomain/api/main.js"></script>
</head>
...
</html>

在 main.js 脚本中,我从 mydomain 加载另一个脚本。我通过添加脚本标签([script.. src="http://mydomain/api/getsomedata.js?callback_id=3434&someparams=..."])来做到这一点。加载的脚本立即调用 API 回调函数:MyApi.processCallback(...)。一切正常。

但是当我尝试从本地文件(logic.js)加载另一个 mydomain 脚本时,我收到了非常奇怪的情况:所有脚本全局对象都未定义。在之前的调用中没有可见的 MyApi 对象或 jQuery $ 对象。所以我不能调用 MyApi 回调函数。

也许是因为安全限制。Anti-XSS,或类似的东西。我尝试添加一个 X-XSS-Protection 标头,就像在所有 Google JavaScript API 中一样。但这并没有帮助。

我不使用 IFRAME。

这个问题可以完全解决,因为许多跨站点 JavaScript API(Google Maps API 等)都在同一个想法上工作。

4

1 回答 1

0

您的脚本中发生了什么?

如果您正在对域进行 Ajax 回调,您的脚本将失败并出现同源安全错误。如果您需要从另一个域与您的服务器进行通信,那么您需要使用JSONP来完成它。如果您只使用现代浏览器,则可以使用CORS

于 2010-08-12T17:15:57.863 回答