混合内容 页面在HTTPS下加载,但请求了一个不安全的资源 这个请求已被阻止,内容必须通过HTTPS提供

21
混合内容:该页面在 HTTPS 下加载,但请求的资源为不安全的资源。此请求已被阻止;必须通过 HTTPS 提供内容。
4个回答

40

无法使用JavaScript禁用混合内容,但您可以添加此标记

Translated: "无法使用JavaScript禁用混合内容,但您可以添加此标记"
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

将以下内容添加到您的HTML中,以允许混合内容


这似乎对当前版本的Chrome没有任何影响。请查看我在Chrome标志下的回答。 - James Newton

2

为了允许混合内容
1- 将这个元标签添加到页面(HTML文件)中

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

2- 如果你遇到 ERR_CONNECTION_REFUSED 错误,请在你的 fetch 请求中添加 referrerPolicyunsafe_url 参数。
例如:

fetch('http://URL', {
    // ...
    referrerPolicy: "unsafe_url" 
});

警告:此策略将从HTTPS资源URL泄露可能私有的信息到不安全的来源。请仔细考虑此设置的影响。
有关更多信息,请查阅以下两个文档:
  1. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
  2. https://javascript.info/fetch-api

referrerPolicy: "unsafe_url" 在Chrome浏览器中似乎没有任何效果。 - James Newton
这两个似乎在Chrome中都没有任何效果。 - James Newton

1
在Chrome中,您可以通过以下标志将URL视为安全:

chrome://flags/#unsafely-treat-insecure-origin-as-secure


您可以输入多个协议和URL,甚至可以在逗号分隔的列表中使用本地IP地址。例如:http://192.168.1.142, ws://192.168.1.142

问题:1. 需要用户的信任或知识(浏览器会以降级功能的警告消息启动),2. 仅适用于Chrome。3. 稍微降低了安全性。

1

将以下内容添加到.htaccess文件中

Header add Content-Security-Policy "upgrade-insecure-requests"

这将让浏览器尝试在 HTTPS 页面中以 HTTPS 加载 HTTP 内容。


这个答案解决了我的问题,但是你能解释一下为什么会发生这种情况吗?页面一个月前还好好的,突然今天早上就出了这个问题。 - Anel Hodžić
1
@AnelHodžić 可能是因为浏览器更新了,新版本开始强制执行混合内容错误。 - James Newton
在Chrome中似乎没有任何效果。 - James Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接