代码中的某处,通过安全网站,使用以下代码段:
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "pugpig://onPageReady");
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
此处设置的iframe src属性实际上是触发回调,但它导致Chrome(版本54)抱怨“混合内容”,因为src属性被解释为https://域上的非https网址,并且Chrome版本不向用户提供简单的选项,允许无论如何加载混合内容(例如地址栏中的盾牌图标)。
由于某些原因,更改Chrome版本/使用其他浏览器/使用--allow-running-insecure-content开关启动chrome不是一个选项,所以我的问题是,有没有办法制作“pugpig:/ / onPageReady“部分被视为https网址?
答案 0 :(得分:0)
你可以试试这个: -
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
或强>
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content" />
将其粘贴到<head>...</head>
标记中。
HTTP Content-Security-Policy
(CSP)block-all-mixed-content
指令阻止在使用HTTPS加载页面时使用HTTP加载任何资产。
阻止所有混合内容资源请求,包括主动和被动混合内容。这也适用于<iframe>
文档,确保整个页面都是混合内容免费的。
在upgrade-insecure-requests
之前评估block-all-mixed-content
指令,如果设置了前者,后者实际上是无操作。建议设置一个指令或另一个 - 而不是两者。
答案 1 :(得分:-1)
正如我所知道的那样,不,不是。如果有,它可以被认为是一个安全漏洞,它将被修复。