javascript - 让我们完全在客户端使用脚本标签解决跨域ajax

标签 javascript ajax cross-domain eval

我知道,有 JSONP,它涉及服务器合作来命名数据空间。

令我困扰的是,脚本标签 src 的内容已评估,但可供读取。 p>

<script src="http://www.google.com"></script>

我们需要弄清楚的是如何命名数据,仅此而已。 当然,我尝试了相当愚蠢的事情,但没有相关结果(我知道这不起作用,但你可以看到我想要实现的目标):

<script>eval('var namespace="');</script>
<script src="http://www.google.com"></script>
<script>eval('";');</script>

由于确实没有关于如何评估 src 内容的相关信息,我知道它是全局范围,但如果我们可以跟踪评估步骤或者可能以某种方式评估范围(关于此的文档也很少),我们可以解决这个恼人的“已评估但不可读”的问题。

有什么想法吗?

最佳答案

HTML5 提供了 window.postMessage,它提供了安全跨域消息传递的机制,并受 Firefox 3、Opera 9.6 和 WebKit nightlies 的支持。

也就是说,您上面的建议不起作用,因为它需要与 javascript 的 eval 完全不同的行为。 eval 在当前上下文中解析并执行给定的字符串——您所请求的是 eval 更改包含函数的实际代码。例如。

 for (var i = 0; i < 10; i++) eval("; doSomething();");

会变成

 for (var i = 0; i < 10; i++) ; doSomething();;

意味着 for 循环变空,并且 doSomething 只会被调用一次。显然,这会导致语义难以理解,并且大大降低了使用安全性,因为 eval 将获得直接影响控制流的能力。

关于javascript - 让我们完全在客户端使用脚本标签解决跨域ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/551363/

相关文章:

javascript - 将 AngularJS 从 1.5.0 更新到 1.5.8

javascript - 我需要通过查询字符串传输一个 javascript 对象

javascript - 如何在javascript中获取跨域请求的响应

javascript - 联系表 7 基于下拉选择的重定向

javascript - JQuery:使用元素的html()(innerHTML)作为canvas的drawSvg方法的参数

jquery - 如何在 jQuery 中放大缩略图中的图像?

php - Ajax PHP Jquery - 回显数据

php - 如何在Chrome中修复 “This Set-Cookie was blocked due to user preferences”? (Stackoverflow SSO登录/Ajax CORS请求)

javascript - html5 datalist 上的 ng-click 事件无法正常工作

javascript - 我想获取城市名称的经纬度