【问题标题】:How to make Chrome 92 display alert(), prompt() and confirm() from iframe opened on different subdomain如何使 Chrome 92 从不同子域上打开的 iframe 显示 alert()、prompt() 和 confirm()
【发布时间】:2021-10-05 04:18:56
【问题描述】:

我有这种情况:

来自http://desktop.ourdomain.local 的页面包含一个带有 src="http://legacy-application.ourdomain.local" 的 iframe

http://legacy-application.ourdomain.local,广泛使用警报和提示,在 google 发布 chrome 92 之前效果很好,Chrome 92 表明这不再是一种选择(参见 https://www.chromestatus.com/feature/5148698084376576

在这里解释的那些中尝试了很多东西

还有许多关于 CORS 的试验,以及 iframe 沙盒的许多组合(allow-same-origin allow-scripts allow-modal ...)

有没有人遇到同样的问题并解决了?

【问题讨论】:

  • @Bravo,是的,我知道,但正如 url 所暗示的,它是一个遗留应用程序......您知道正在工作但您不知道如何工作的那些事情之一 :)
  • 啊,好的 - 好吧,任何 chrome 文档是否解释了解决它的任何方法 - 在某些“阶段”期间,如果没有某种解决方法,谷歌就不会做出这样的改变 - 哦,等等,这正是谷歌所做的
  • 阅读了一些讨论等,这是一个“弃用试用”,直到版本 96 - 所以......必须有一些解决方法
  • 受影响的网站可以使用原始试用版暂时退出此更改 - 这很有帮助...不是
  • groups.google.com/a/chromium.org/g/blink-dev/c/hTOXiBj3D6A/m/… - 您唯一的办法是注册 Origin Trial 以禁用不同来源的子帧对话框抑制并按照 Origin Trials Guide for Web Developers 指南添加您收到的令牌注册到您的 iframe 页面后。这将为您赢得一些额外的时间(在这个阶段直到 12 月 15 日)来替换应用程序中的任何 JS 对话框。试用期结束后,您目前在应用程序中遇到的行为将是永久性的。

标签: javascript google-chrome iframe same-origin-policy


【解决方案1】:

正如@Bravo 所指出的,谷歌提供了一种“禁用”限制的方法,至少在他们决定保留或删除之前,这将在 12 月 15 日发布 chrome 96 时发生。here 我能够获取一个令牌,该令牌可以作为“Origin-Trial”标题的值添加到需要禁用该功能的页面上。仅当站点以 https 提供时,令牌才起作用,但这应该比使用警报和确认重写所有表单更容易解决!与此同时,我有时间找到一个明确的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2013-11-20
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多