Https 网站 访问 Http资源

Posted 流星蝴蝶没有剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Https 网站 访问 Http资源相关的知识,希望对你有一定的参考价值。

Https 网站访问 Http 资源

如果在https的页面需要加载http的资源,那么浏览器就会报错或者提示,为了促进用户升级协议,同时不需要网站开发者劳师动众地把整个网站的http资源改成https资源,chrome增加一个Upgrade-Insecure-Requests: 1头,告诉服务器,浏览器可以处理https协议,然后服务器返回Content-Security-Policy: upgrade-insecure-requests头,或者通过meta头设置,告诉浏览器,对于页面的http资源,请求时可以自动升级到https,比如在https的网站上有一张图片url是http://localhost/1.jpg,浏览器请求时会把url变成https://localhost/1.jpg,所以这里首先需要服务器在端有相对应的资源。但是有一种情况例外,那就是https网站中a标签对应的外站资源不会被升级,比如a网站有一张b网站的链接,那么这个链接对应的url不会升级。

在head标签中添加:

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

为了统一使用,封装到js中使用


// 动态添加meta资源https
if (window.location.protocol.split(":")[0] == 'https') 
	var meta = document.createElement('meta');
	meta.content = "upgrade-insecure-requests";
	meta.setAttribute('http-equiv', "Content-Security-Policy");
	document.getElementsByTagName('head')[0].appendChild(meta);

以上是关于Https 网站 访问 Http资源的主要内容,如果未能解决你的问题,请参考以下文章

Https 网站 访问 Http资源

xss攻防

阿里云云虚拟主机上个人网站的Https访问配置

HTTP访问控制(CORS)

为啥更换ssl证书后http访问不了网站?

CORS (跨域资源共享)的漏洞