SpringBoot Http站点改为Https
背景:
本地调用摄像头时正常,但部署到线上时页面出现:TypeError: Cannot read property ‘getUserMedia’ of undefined ,此错误可以通过设置浏览器来解决,但是比较复杂。
通过查阅Web API发现:
发现该问题与浏览器的安全策略有关。出于安全考虑,浏览器是不允许随便开启摄像头的,https协议
下方可开启。而我的服务恰好是http协议的,后将站点访问改为https协议后,便可正常调用摄像头了。
Https简介:
根据 wikipedia 上的介绍
- 超文本传输安全协议(HyperText Transfer Protocol Secure),缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。
历史上,HTTPS 连接经常用于网络上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初,HTTPS 开始广泛使用,以确保各类型的网页真实,保护账户和保持用户通信,身份和网络浏览的私密性。另外,还有一种安全超文本传输协议(S-HTTP),也是 HTTP 安全传输的一种实现,但是 HTTPS 的广泛应用而成为事实上的 HTTP 安全传输实现,S-HTTP并没有得到广泛支持。
准备工作
首先有一个 https 证书,可以从各个云服务厂商处申请一个免费的(我申请的为阿里云SSL),也可以直接借助 Java 自带的 JDK 管理工具 keytool 来生成一个免费的 https 证书。
进入到 %JAVVA_HOME%\bin
目录下,执行如下命令生成一个数字证书:
keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -key