前端视角看 HTTPS
最近用Docusaurus
搭了一个个人网站,部署后看到浏览器地址栏上“不安全”三个字感觉特别辣眼,便不由自主的想起了HTTPS
。回忆起自己在日常开发中遇到的一些与HTTPS
相关的知识,忍不住想将这些年积累的一些细节和心得体会整理一下。
为什么要使用HTTPS
HTTPS的发展历程是一段颇具趣味的历史,充满了技术创新与安全挑战。作为前端开发者为什么要使用HTTPS
,难道HTTP
不能用了吗?当然不是,从本质上讲HTTPS
还是HTTP
,对我们前端开发而言大多数情况下根本就不需要考虑是不是要使用HTTPS
,HTTPS
主要针对安全有要求的内容。然而,安全问题由来已久,许多前端功能和浏览器的安全策略都依赖 HTTPS
来确保用户的安全和隐私。而我自己对以下内容印象较为深刻:
HTTP2
HTTP2是基于HTTPS
实现的,所以要启用HTTP2就必须使用HTTPS
。HTTP2给人影响最深刻的一定是多路复用,它允许在同一个连接上并发发送多个请求和响应,不会像 HTTP/1.x 那样每个请求需要建立新的连接,完美解决浏览器并发的限制问题(记得以前处理这个问题的时候还是参考百度,用多个域名固定资源的方法来提升并发数量)。如果说某一天领导说我们的网站要把协议升级到HTTP2,前端的同学一定要淡定,因为这几乎不会涉及到代码的修改,HTTP这个协议是给浏览器和服务器使用的,只要我们的服务端和浏览器都支持HTTP2,那这个功能就完成了。
Service Worker
Service Worker 允许 Web 应用在后台独立工作,我们可以通过它执行耗时计算、缓存资源、处理离线请求等。但由于它涉及到后台操作和缓存用户的数据,浏览器要求它只能在 HTTPS
环境下运行,这是为了避免恶意脚本的注入和保障用户数据的安全。
Web Authentication API(WebAuthn)
这个功能我并没真正的使用过,它是一种基于公钥的身份验证方式,在我们的移动端应用中,如果希望提供快捷的登陆方式比如指纹、面部识别等就可以通过这个API来实现。由于它涉及到敏感的身份信息,WebAuthn 需要在 HTTPS
环境下运行,以确保身份验证过程中的数据不会被窃取或篡改。
Geolocation API
如果需要通过浏览器获取用户的地理位置,浏览器会要求该请求通过 HTTPS
进行。这样可以确保用户的地理位置信息在传输过程中不会被第三方窃取或篡改。
Clipboard
Clipboard API 允许我们在网页中读取或写入剪贴板的内容,实现剪切、复制和粘贴功能。但由于剪贴板中可能包含用户的敏感信息,浏览器要求这个功能只能在 HTTPS
环境下运行。
Notifications API
Notifications API 允许 Web 应用在用户的设备上显示通知。它通常用于提醒用户一些重要的事件、消息或更新,尤其是在用户没有打开应用的情况下。与传统的桌面应用通知相似,Web 应用也可以通过通知向用户传递信息。目前,这已经是一个比较常见的功能,这个功能也只能在 HTTPS
环境下运行。
除以上功能外,还有很多功能也需要在HTTPS
环境下运行,比如:摄像头、麦克风、蓝牙等。
日常工作中也偶尔听同事们说起遇到的一些奇葩问题,最后是使用HTTPS
解决的。我自己也遇到过一次,我们的项目中使用CORS实现跨域通信,这是一个我们熟悉的解决方案。然而,最终在上线时却遇到了一些意外情况,有个功能在实际使用中频繁出现跨域问题。经过一番排查,我们发现这个功能中有一个接口的URL是以/
结尾的,大致长这样:http://api.example.com/d/history/ 。虽然 URL 看起来并不特别引人注意,但实际调用时却出现了异常响应。大约有 20% 的概率可以正常响应,而其余情况下,接口返回的却是一段HTML
代码,我们约定的接口返回格式应该是JSON
。一位经验丰富的老大哥迅速给出了最佳解决方案:切换到HTTPS
。在实际开发过程中使用HTTPS
确实可以规避掉一些问题。
证书
使用HTTPS
不可避免的要用到安全证书,怎么获得免费证书呢?以前都是在阿里云上直接领一个,但这次找了好久都没找到这个功能的入口。后来果断加了一个Caddy
做代理,使用下来感觉基础代理配置方面比Nginx
简单很多,并且它默认使用 Let's Encrypt(Let's Encrypt是一个免费的证书颁发机构)提供的证书来为网站启用 HTTPS
。Caddy
提供了简单、自动化的证书颁发和续期服务。当然,如果你的网站是一个大型的商业网站,那么建议还是购买一个收费的证书,毕竟免费的东西总是有一些限制的。
结语
随着技术的不断发展,越来越多的 API 被引入到浏览器中,其中许多涉及隐私和数据安全的功能都要求在HTTPS
环境下运行。对于前端开发者来说,HTTPS
不再只是一个协议,更是一种安全意识,它已经成为每个开发者必须掌握的基础知识。
前端视角看 HTTPS的更多相关文章
- 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的
百度云链接:https://pan.baidu.com/s/1kUPdf5H(无密码) 截图: <HTTP权威指南> [豆瓣书评]:此书第一部分是HTTP的概略,如果你没有时间,通读第一部 ...
- 换一种视角看DNS(采坑篇)
换一种视角看DNS 我们尽量用精炼的语言,尽可能的规划DNS的全貌(当然笔者水平有限,如有错误请不吝赐教). 通常啊我们在个人PC中能看到DNS的配置身影就是在上网的时候,通常如果你不配置DNS可能找 ...
- Mybatis系列全解(七):全息视角看Dao层两种实现方式之传统方式与代理方式
封面:洛小汐 作者:潘潘 一直以来 他们都说为了生活 便追求所谓成功 顶级薪水.名牌包包 还有学区房 · 不过 总有人丢了生活 仍一无所获 · 我比较随遇而安 有些事懒得明白 平日里问心无愧 感兴趣的 ...
- ? 这是个很好的问题。Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择。请看 https://golang.org/issue/17969 结束语(Closing notes) 通过研究 Go 垃圾收集器,我能够理解 Go GC 当前结构的背景以及它如何克服它的弱点。Go发展得非常快。如果你对 Go感兴趣,最好继
? 这是个很好的问题.Go 当前的 GC 显然做了一些额外的工作,但它也跟其他的工作并行执行,所以在具有备用 CPU 的系统上,Go 正在作出合理的选择.请看 https://golang.org/i ...
- 你不容错过的 腾讯 AlloyTeam Web 前端大会 看点完全剖析
AC大会 ( Alloyteam Conf ),是由腾讯前端技术团队的标杆团队 AlloyTeam 发起的前端技术大会,旨在分享团队在技术研究.产品研发.开源项目的经验沉淀.AC2017 将会继续在工 ...
- 从前端角度看ajax如何保护接口的安全性
一.前言 在web中,使用Ajax调用API,撇开跨域不讲,怎么做安全验证,防止别的网站调用呢?假设没有做安全保障,任何用户都可以直接访问接口,这回暴露出极大的安全隐患. 二.后端怎么做? 1.一些接 ...
- 从前端开发看HTTP协议的应用
一.Chrome Developer Network Tab Cheome Developer作为现在前端开发者最常用的开发调试工具,其具有前端可以涉及到的各方面的强大功能,为我们的开发和定位问题提供 ...
- 绝对精品推荐做前端的看下:Web前端开发体会十日谈
20151208感悟: 前端人的角度来看的话,感觉像是阅读一个大牛前端的全部武功的一个秘籍说明,里面的思想高价值蛋白真是太多太多,推荐看. Web前端开发体会十日谈 一直想写这篇“十日谈”,聊聊我对W ...
- 模块化 require.js 入门教学(前端必看系列)
在工作的时候总是会用到模块化开发,那接下来我就顺着这个问题来说一下什么是模块化 前端模块化 !!! JS 模块化提供给我们三种规范 分别就是 No.1 commonjs 这个其实也就代表了node. ...
- SpringBoot 全局视角看springboot
从单体架构到微服务 单体架构 任何一个网站在发布初期几乎都不可能立马就拥有庞大的用户流量和海量数据,都是在不停 的试错过程中一步一步演变其自身架构,满足其自身业务.比如现在能够抗住双十一这么大 流量的 ...
随机推荐
- 第三方css动画库
https://animate.style///安装npm install animate.css --save //引入 import 'animate.css';//使用 <h1 class ...
- Ant Design Pro项目ProTable怎么获取搜索表单值
前情 公司有经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 产品效果图 最新接到的一个后 ...
- ie浏览器设置允许跨域
前情 在访问测试搭建的测试环境的时候,发现接口因为跨域全部失败了,服务端又不想设置允许跨域,又急于使用,于是想到是不是可以使用跨域浏览器,上一次已解决chrome允许跨域,这一次来设置IE允许跨域 放 ...
- 渗透测试-前端验签绕过之SHA256
本文是高级前端加解密与验签实战的第1篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过SHA256签名来爆破登录. 绕过 通过查看源代码可以看到key为 123412 ...
- 【异或运算】codeforces 1153 B. Dima and a Bad XOR
前言 异或运算:是一种在二进制数系统中使用的逻辑运算.它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为 \(1\):如果相同,则结果为 \(0\). 异或运算的规则 \(0\) XOR ...
- orangepi zero3开启指定频段WiFi热点的指令
步骤 通过 -c 命令即可指定wifi频段,避免和其他wifi的频段撞在一起. 例如下面这条命令创建了一个频段为40,WiFi名为zero3,网段为192.168.12.0/24的WiFi热点 sud ...
- 那些年,我们一起追的 WLB
2019年,那一年,我29岁. 那一年,"996是福报"的言论在网络上引发舆论轩然大波. 那一年,"大小周"."996"."007 ...
- Write failed: Broken pipe > Couldn‘t read packet: Connection reset by peer SFTP服务器连接出现的问题
如果你链接服务器的时候出现下面的提示: Write failed: Broken pipeCouldn't read packet: Connection reset by peer这个问题的原因是C ...
- Qt开源作品6-通用视频控件
一.前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比 ...
- Qt音视频开发6-ffmpeg解码处理
一.前言 采用ffmpeg解码,是所有视频监控开发人员必备的技能,绕不过去的一个玩意,甚至可以说是所有音视频开发人员的必备技能.FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开 ...