解决https网页加载http资源报错问题
HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:
Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.
HTTPS改造之后,我们可以在很多页面中看到如下警报:
很多运营对 https 没有技术概念,在填入的数据中不免出现 http 的资源,体系庞大,出现疏忽和漏洞也是不可避免的。
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests
的草案,他的作用就是让浏览器自动升级请求。
在我们服务器的响应头中加入:
header("Content-Security-Policy: upgrade-insecure-requests");
我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。可以查看 google 提供的一个 demo:
不过让人不解的是,这个资源发出了两次请求,猜测是浏览器实现的 bug:
当然,如果我们不方便在服务器/Nginx 上操作,也可以在页面中加入 meta
头:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
目前支持这个设置的还只有 chrome 43.0,不过我相信,CSP 将成为未来 web 前端安全大力关注和使用的内容。而 upgrade-insecure-requests
草案也会很快进入 RFC 模式。
从 W3C 工作组给出的 example,可以看出,这个设置不会对外域的 a 链接做处理,所以可以放心使用。
相关阅读
http://www.w3.org/TR/mixed-content/
https://www.chromestatus.com/feature/6534575509471232
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
三大网络管理协议:SNMP、NETCONF、RESTCONF介绍
本文将详细介绍三种主要的协议:SNMP(Simple Network Management Protocol)、NETCONF(Network Configuration Protocol)和RESTCONF,需要的朋友可以参考下2024-02-13- 常见的网络协议有:TCP/IP协议、UDP协议、HTTP协议、FTP协议等,本文就详细的介绍一下常见的网络协议,通过这些具体的协议更深刻的认识整体网络的传输流程及相关网络原理,2023-05-30
- 本文主要介绍了L2TP和PPTP的区别,主要的前区别在于用途不同、使用要求不同,下面就来介绍一下L2TP和PPTP的联系与区别,感兴趣的可以了解一下2023-05-30
- 这篇文章主要介绍了自组织网络Ad Hoc之OLSR 协议详解,需要的朋友可以参考下2023-05-08
- 这篇文章主要介绍了自组织网络Ad Hoc之AODV协议详解,需要的朋友可以参考下2023-05-08
- 自组织网络(Ad Hoc)是一种移动通信和计算机网络相结合的网络,是移动计算机网络的一种,用户终端可以在网络内随意移动而保持通信2023-05-08
- 浏览器输入一个URL回车后,会发生什么呢?这里就为大家分享一下,需要的朋友可以参考下2022-10-19
- 本篇主要是对网络协议进行一个归纳总结,方便后续查阅及复习,当然如有新的认知或新的理解,也会持续更新2022-10-19
- 今日回顾网络知识时,发现自己专门整理过一篇关于日常生活中常见的网络协议知识以及作用的梳理,特发此一贴,也当给自己巩固网络知识了,如有错误,望各大佬指正2022-10-19
- HTTP即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求,需要的朋友可以参考下2022-10-19
最新评论