我有一个PHP站点(使用HTTPS),它从API中提取博客内容HTML。
有时,博客内容包含img
标记。在很少的情况下,src
标记的img
可能指向一个https URL,它是对http的重定向。
因此,当我的站点的访问者加载页面时,浏览器(例如Firefox)在URL栏中写道:
连接不安全 此页面的部分不安全(如图像)。
我能做些什么来确保我的访问者总是体验完整的https?
我的PHP或javascript是否可以先发制人地检测到img
src
会重定向到http而忽略标记(防止加载)?
发布于 2018-10-11 17:01:08
显然,在客户端HTML中接受HTTP连接不是一个可接受的解决方案,因为这可能是一个安全问题。因此,我想出两种很好的办法来解决这个问题:
1)解析来自API的代码,使用CURL跟踪所有图像链接,检查是否被重定向(并缓存结果,因为您很可能不希望对每个请求执行这个昂贵的操作)
很可能你现在会问如何做到这一点。好的:要么关闭卷发重定向,然后检查状态200以外的其他内容是否被返回,如果没有返回,则将图像剥离。正确的设置应该是:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
或者,您可以使用以下方法检查最终重定向URL:
$redirectURL = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL );
这个问题对你很有帮助:How can I find where I will be redirected using cURL?
2)从API中解析代码,通过CURL获取远程映像,在本地测试并保存它们,并将src替换为服务器的URL。
这两种方法都可能是处理问题的好方法,具体取决于获取这些远程内容的频率和可用资源的数量。在大多数情况下,最可能的方法1)更值得推荐。
https://stackoverflow.com/questions/52764702
复制相似问题