【问题标题】:Permission denied for iframe with source on same domain - Apache vhost cfg issue?同一域上源的 iframe 的权限被拒绝 - Apache vhost cfg 问题?
【发布时间】:2011-01-29 23:53:38
【问题描述】:

我正在使用 javascript 来操作页面上的 iframe,该页面从与执行操作的页面相同的域加载内容。事实上,在 iframe src 中,我使用的是这样的相对路径:

<iframe id="myiframe" src="/foo/bar.html" .../>

页面在 iframe 中显示没有问题,但是当我尝试使用 javascript 访问 iframe 时,我收到此错误:

权限被拒绝 http://mysite.com获取财产 Window.document 来自 http://www.mysite.com.

我知道http://www.mysite.comhttp://mysite.com 被视为不同的域,无论它们实际存在于何处,但我从未配置任何东西来使用 www。子域。所以我不知道 www 部分来自哪里。我最好的猜测是我需要更改我的虚拟主机配置中的某些内容。我正在使用 Apache 2,并且我有一个非常简单的虚拟主机配置文件:

<VirtualHost *>
    ServerName mysite.com
    DocumentRoot /path/to/mysite.com/www
</VirtualHost>

有什么想法吗?

【问题讨论】:

  • 可能是在 DNS 服务器上声明的 CNAME/A 记录,将 *.mysite.com 指向 .mysite.com 更多:en.wikipedia.org/wiki/CNAME_record 您可以在 www.mysite 上的所有流量上添加重定向.com 到 mysite.com 在您的应用程序中,甚至在 javascript 中;)
  • 我不确定重定向如何解决浏览器的安全问题,因为域名不匹配可能会引发跨站脚本攻击。我知道我可以通过修改源以允许另一个域来解决症状,但我只是不明白第二个域首先来自哪里。

标签: javascript html ajax apache vhosts


【解决方案1】:

"www.mysite.com" != "mysite.com"

跨框架/窗口通信需要在同一个协议+主机名+端口

【讨论】:

  • 是的,我知道,因此我发布了链接。我的问题是当我使用相对 url 作为 iframe 的来源时,www 子域来自哪里。因为它是一个相对 url,你会认为 url 的服务器名称部分是正确的。但事实并非如此。
【解决方案2】:

作为Nick noted,问题是域不匹配。如果您在同一个域中,您可以这样做:

  1. 在您将在 iframe 中加载的页面上打开 Web 控制台。
  2. 输入document.domain
  3. 确保包含 iframe 的页面上的 document.domain 设置为相同的值。

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 2016-09-24
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2012-08-13
    相关资源
    最近更新 更多