gpt4 book ai didi

javascript - 错误 : Permission denied to access property 'document'

转载 作者:IT王子 更新时间:2023-10-29 03:22:15 26 4
gpt4 key购买 nike

如何在 Firefox 中修复此消息?我正在使用具有 anchor 标记的 Iframe?我想获得对此 anchor 的引用,但是当我尝试访问 anchor 时出现此错误:

var frameWindow = document.getElementById('myIframe').contentWindow;
var anchor = frameWindow.document.links[0]; //.getElementsByClassName('a');
anchor.onclick....

最佳答案

Relaxing the same-origin policy

在某些情况下,同源策略过于严格,会给使用多个子域的大型网站带来问题。这里有四种放松它的技巧:

document.domain property

如果两个窗口(或框架)包含将域设置为相同值的脚本,则对这两个窗口放宽同源策略,并且每个窗口都可以与另一个窗口交互。例如,从 orders.example.com 和 catalog.example.com 加载的文档中的协作脚本可能会将它们的 document.domain 属性设置为“example.com”,从而使文档看起来具有相同的来源并使每个文档都可以读取对方的属性。这可能并不总是有效,因为存储在内部表示中的端口可能会被标记为空。换句话说 example.com 端口 80 将变为 example.com 端口 null 因为我们更新了 document.domain .端口 null 可能不会被视为 80(取决于您的浏览器),因此可能会失败或成功,具体取决于您的浏览器。

Cross-Origin Resource Sharing

放宽同源策略的第二种技术正在以跨源资源共享的名义进行标准化。该标准草案使用新的 Origin 请求 header 和新的 Access-Control-Allow-Origin 扩展了 HTTP响应头。它允许服务器使用 header 明确列出可能请求文件的来源或使用通配符并允许任何站点请求文件。 Firefox 3.5 和 Safari 4 等浏览器使用这个新 header 来允许使用 XMLHttpRequest 的跨源 HTTP 请求,否则同源策略会禁止这些请求。[7]

Cross-document messaging

跨文档消息传递是另一种新技术,它允许来自一个页面的脚本将文本消息传递给另一个页面上的脚本,而不管脚本的来源如何。调用 postMessage() Window 对象上的方法异步触发 "onmessage"该窗口中的事件,触发任何用户定义的事件处理程序。一个页面中的脚本仍然不能直接访问另一个页面中的方法或变量,但它们可以通过这种消息传递技术安全地进行通信。

JSONP

JSONP 通过添加 <script> 允许页面从不同的域接收 JSON 数据。从不同域加载 JSON 响应的页面元素。

函数调用是 JSONP 的“P”——围绕纯 JSON 的“填充”,或者根据 some “前缀”。按照惯例,浏览器将回调函数的名称作为命名查询参数值提供,通常在其对服务器的请求中使用名称 jsonp 或回调作为命名查询参数字段名称,例如,

<script type="application/javascript"
src="http://server2.example.com/Users/1234?jsonp=parseResponse">
</script>

在此示例中,接收到的有效载荷将是:

parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7});

关于javascript - 错误 : Permission denied to access property 'document' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7995223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com