无法访问我的 iFrame 中的值,这给了我权限被拒绝
Posted
技术标签:
【中文标题】无法访问我的 iFrame 中的值,这给了我权限被拒绝【英文标题】:Cant access values inside my iFrame it gives me permission denied 【发布时间】:2011-04-14 12:52:27 【问题描述】:我无法访问 iFrame 中的值,这给了我被拒绝的权限。我可以访问两个页面(父页面和子页面)。
我在两个页面上都添加了以下 javascript 行:
document.domain = "sub.domain.com";
但萤火虫给了我: 非法的document.domain值
当我尝试访问 iFrame 中的元素时,它会提示:Permission denied for http://sub1.domain1.com to call method Location.toString on http://sub2.domain2.com
谢谢
【问题讨论】:
不允许跨域脚本。 【参考方案1】:不允许跨域脚本。 http://en.wikipedia.org/wiki/Cross-site_scripting
不工作:
http://sub1.domain1.com
http://sub2.domain2.com
工作:
http://sub1.domain1.com
http://sub2.domain1.com
【讨论】:
是的,我知道,我想将它们设置为同一个域,但是 (document.domain = "domain.com") 无法正常工作。【参考方案2】:您只能将 document.domain 设置为页面实际域的超级域,而不是完全不同的超级域 (https://developer.mozilla.org/en/DOM/document.domain)。因此,如果您设置 1.sub.domain.com 和 2.sub.domain.com,您应该能够将它们两者上的 document.domain 设置为 sub.domain.com,这应该可以工作。
【讨论】:
您的意思是我可以将 x.example.com 更改为 y.exmaple.com 但我不能将其更改为 y.example2.com 吗? 不完全。您只能将 x.example.com 更改为 example.com。您基本上只能从域中剥离现有部分,而不能添加任何新部分。您设置中的 example2.com 或 sub.domain.com 不是原始域的一部分,因此无法添加。【参考方案3】:使用 iframe 进行跨域通信的一些技巧 ~> http://softwareas.com/cross-domain-communication-with-iframes
【讨论】:
我之前经历过以上是关于无法访问我的 iFrame 中的值,这给了我权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins Build Execute Shell - 文件权限被拒绝
如何在不同线程的 ASP.NET 中更新 textBox 中的值?
Laravel 5.1 PHPUnit - press() 给了我“无法访问的字段”“”
我的 NSJSONSerialization 似乎给了我嵌套的 NSDictionaries——如何访问外部键中的特定键?