尝试重新加载嵌入式 iframe 时出现 CORS 错误

Posted

技术标签:

【中文标题】尝试重新加载嵌入式 iframe 时出现 CORS 错误【英文标题】:CORS error when trying to reload an embedded iframe 【发布时间】:2012-10-03 14:06:35 【问题描述】:

我正在尝试强制重新加载 iframe 的内容(强制重新加载意味着不应使用浏览器缓存)。从这里的解决方案Reload an iframe with jQuery,我可以通过这个javascript代码做到这一点:

document.getElementById(FrameID).contentDocument.location.reload(true);

但是我遇到了同源策略错误。但是我确实在嵌入了 iframe 的页面和在 iframe 中加载的页面上都启用了 CORS。从 Web 开发工具中,我验证了在 两个 加载时,CORS 标头都存在:

Access-Control-Allow-Origin: *

虽然双方都在不同的域下,但我控制它们,并且可以发送 CORS 标头或任何其他标头(如果需要)。

这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

所描述的情况不需要CORS。 The same origin policy 不允许跨不同域访问 DOM 属性和方法。您可以使用postMessage JavaScript API 启用 IFRAME 和父页面之间的通信。

【讨论】:

【参考方案2】:

虽然这个问题很老了,但是有很多观点,所以我要在这里链接这个很好的trick 给有同样问题的开发者。

【讨论】:

以上是关于尝试重新加载嵌入式 iframe 时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 TextureLoader 从 Rails 应用程序连接到 S3 时出现 CORS 错误

向本地nodeJS服务器发出发布请求时出现AngularJS CORS错误

从自己的域中获取 api 时出现 CORS 错误

尝试搜索 Firestore 并重新加载 tableview 时出现 SearchBar 问题

[画布仅在预加载图像时出现CORS问题

尝试全局启用 CORS 时出现异常