不安全的JavaScript尝试使用URL访问框架

Atu*_*tul 111 javascript iframe webkit cross-domain

当我尝试从包含另一个域网址的iframe将哈希值设置为父网址时,我收到以下错误:

不安全的JavaScript尝试从URL"URL2"的框架访问URL"URL1"的框架.域,协议和端口必须匹配.

我该如何解决这个问题?

Sea*_*sey 123

从不同来源的子文档中,您不能访问顶部窗口的location.hash属性,但您可以设置该location属性本身.

这意味着,假设顶部窗口位置是http://example.com/page/,而不是做

parent.location.hash = "#foobar";
Run Code Online (Sandbox Code Playgroud)

你需要知道父母的位置和做

parent.location = "http://example.com/page/#foobar";
Run Code Online (Sandbox Code Playgroud)

由于资源未导航,因此将按预期工作,仅更改网址的哈希部分.

如果您使用它进行跨域通信,那么我建议使用easyXDM.

  • 徽章会被叫什么?"回应懒惰的人" (35认同)
  • 没有人将此标记为答案,但它有60个赞成票.应该有一个徽章. (13认同)

Evi*_*lMM 13

当两个帧具有不同的域 - >安全性时,不可能使用Crossframe-Scripting.

请参阅:http://javascript.about.com/od/reference/a/frame3.htm

现在回答你的问题:没有解决方案或解决方法,你应该检查你的网站设计为什么必须有来自不同域的两个框架来改变另一个框架的网址.

  • 这是一个常见的要求,即将第三方应用程序嵌入到您的网站中,尤其是在无法使用Web服务等的情况下. (82认同)

小智 9

当我尝试为iframe.src的域进行缓存时,我收到了相同的错误消息.

对我来说,答案是将iframe.src更改为SAME域上的URL,但实际上是一个到所需域的html重定向页面.然后另一个域出现在我的iframe中,没有任何错误.

工作就像一个魅力.:)

  • 我相信Tommy所指的是服务器端代理.参见例如http://benalman.com/projects/php-simple-proxy/或http://developer.yahoo.com/javascript/howto-proxy.html或https://www.google.com/webhp?q =服务器%20side%20proxy%20in%20%7Byour%20favorite%20language%7D或RenédeKat的解决方案http://stackoverflow.com/a/11224975/27938 (3认同)
  • 在最新的Chrome中不起作用:它不会检查src参数,但会加载实际的URL.所以重定向技巧不幸没有任何帮助:-( (2认同)

小智 6

解决方案可以是使用检索远程内容的本地文件

remoteInclude.php

<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;
Run Code Online (Sandbox Code Playgroud)

HTML

<iframe frameborder="1" id="frametest" src="/remoteInclude.php?url=REMOTE_URL_HERE"></iframe>
<script>
    $("#frametest").load(function (){       
    var contents =$("#frametest").contents();
});
Run Code Online (Sandbox Code Playgroud)

  • 一种可能的解决方案是使remoteInclude.php检查所有URL与预先批准的域列表. (2认同)