跨站点的JavaScript问题

时间:2010-08-12 17:07:36

标签: javascript cross-domain xss cross-site

我正在开发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&amp; someparams = ...”])来实现的。加载脚本imediatly调用API回调函数:MyApi.processCallback(...)。一切正常。

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

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

我不使用IFRAMES。

问题可以完全解决,因为许多跨站点JavaScript API都在使用(Google Maps API等)同样的想法。

1 个答案:

答案 0 :(得分:0)

您的脚本中发生了什么?

如果您正在对域进行Ajax调用,那么您的脚本将失败并出现Same Origin安全性错误。如果您需要从其他域与服务器进行通信,则需要使用JSONP来执行此操作。如果您只使用现代浏览器,则可以使用CORS