尝试访问
SecurityError: Blocked a frame with origin "http://www.example.com" from accessing a cross-origin frame.
此错误是同源策略的结果,同源策略是浏览器强制执行的基本安全措施。
同源策略阻止脚本访问资源(例如与其他页面或框架一样)具有不同的来源。来源由 URL 的协议(例如 HTTP)、主机名和端口定义。这些组件中任何一个的差异都会构成一个单独的源。
例如,来自“http://www.example.com”的脚本无法访问来自“https://www.example.com”的资源、“http://www.anothersite.com”或“http://www.example.com:81”。
虽然阻止了对跨源框架的直接脚本访问,但有一个使用 window.postMessage 和事件侦听器的解决方法。这种方法允许您在主页和框架之间交换数据:
主页:
const frame = document.getElementById('your-frame-id'); frame.contentWindow.postMessage(/*variable or object*/, 'https://your-second-site.example');
window.addEventListener('message', event => { // Check the origin of the data if (event.origin === 'https://your-first-site.example') { // Data is from the main page, use event.data to process it } });
请记住,同源策略对于安全至关重要。在浏览器中针对特定站点或全局禁用它只能出于开发目的,并且要格外小心。
以上是为什么我在 JavaScript 中收到'SecurityError: Blocked Cross-Origin Frame Access”?的详细内容。更多信息请关注PHP中文网其他相关文章!