HTML中的HTTP升级HTTPS请求
前一段时间在做onlyoffice的集成时发现,做了https代理后会出现某一个内部请求一直是http,无法修改为https,如果要修改就需要跟踪源码修改编译,这样太耗时而时间又紧,查阅资料发现可以强制浏览器中的所有http请求升级为https。
添加mate升级请求
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
动态引入
添加后测试所有的http都升级成了https请求,但是问题又来了 ,我使用http请求来访问 ,未做https的配置 ,则不能正常使用了 ,为了能兼容两种场景 ,引入js动态引入mate数据,代码如下:
<script>
// 根据URL的不同,动态创建meta标签
function loadMetaTags() {
var meta = document.createElement('meta');
if (window.location.protocol === 'https:') {
meta.setAttribute('http-equiv', 'Content-Security-Policy');
meta.setAttribute('content', 'upgrade-insecure-requests');
document.head.appendChild(meta);
}
}
// 页面加载完成后执行
window.onload = loadMetaTags;
</script>
修改后测试 ,http和https都可以正常访问了 。
License:
CC BY 4.0