我正在强制使用 https
访问我的网站,但有些内容必须通过 http
加载(例如视频内容不能通过 https),但浏览器因为 mixed-contents
策略而阻止请求。
经过数小时的搜索,我发现可以使用 Content-Security-Policy,但我不知道如何在其中允许混合内容。
<meta http-equiv="Content-Security-Policy" content="????">
我正在强制使用 https
访问我的网站,但有些内容必须通过 http
加载(例如视频内容不能通过 https),但浏览器因为 mixed-contents
策略而阻止请求。
经过数小时的搜索,我发现可以使用 Content-Security-Policy,但我不知道如何在其中允许混合内容。
<meta http-equiv="Content-Security-Policy" content="????">
无法实现。
CSP是用来限制网站内容的,而不是放宽浏览器的限制。
安全的HTTPS网站为用户提供了一定的保障,如果允许在其上加载HTTP内容(因此会出现混合内容警告),这就不太公平了,如果您可以未经用户同意隐藏这些警告,那就更加不公平了。
您可以使用CSP来帮助迁移到HTTPS,例如:
您可以将它用于自动升级HTTP请求到HTTPS(尽管浏览器支持并不普遍)。这有助于防止您错过将HTTP链接更改为HTTPS等效的情况。但是,这假设资源可以通过HTTPS加载,看起来您无法通过HTTPS加载它们,因此这不是一个选择。
您还可以使用CSP来帮助您识别您错过的网站上的任何HTTP资源,通过向您可以监视的服务返回消息来报告尝试加载HTTP资源。这使您可以识别和修复HTTP链接以便转换为HTTPS,因此您不必依赖于上述自动升级。
但这都不是您真正想要的。
<?php
$endp = !isset($_GET['endp']) ? '' : $_GET['endp'];
if ($endp === 'doit') {
header('Content-Type: application/json');
echo file_get_contents('http://problematic-server/doit');
} else {
echo '{"err":"unsupported-endpoint"}';
}
// Don't close php tag to avoid unwanted whitespace in response.
problematic-server
,那么会打开许多新的潜在攻击面。在使用这个解决方案之前,请注意这一点。 - Freedom_Ben