SharedArrayBuffer is not defined 问题的解决以及服务器https证书的配置
问题
前端使用了ffmpeg压缩组件,在运行项目出现 SharedArrayBuffer is not defined的问题,使项目不能正常运行,经过网上查询,需要在response加入以下的head:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
尝试在后端系统中,在拦截器的prehandler给reponse加入者两个头,加入后项目可正常运行。又将项目挂到测试服务器上,却发现又报了 SharedArrayBuffer is not defined的问题。经过查证,这个东西跑在线上的服务器,需要https才能正常使用,于是尝试给服务器安装https证书以及申请证书。由于服务器没有域名,这里为服务器申请纯ip的证书,使用zeroSSL网站进行申请,申请完毕后拿到以下证书文件:

需要在springBoot中启用https,并且将上面的crt文件改成p12。
openSSL 的bin目录下 cmd,输入
openssl pkcs12 -export -clcerts -in server.crt -inkey servery.key -out server.p12
- server.crt 替换为你的 crt 文件
- server.key 替换为你的 key 文件
- 记住输入的密码,后面会用到application里面
- 执行此命令,生成了我们需要的 p12 文件,将其复制到 spring boot 项目下,和 application.properties 平级。
springboot项目配置
1 server
2 ssl:
3 key-store: server.p12
4 key-store-password: xxxx
5 key-store-type: PKCS12
6 enabled: true
然后再启动类中配置如下代码,实现全部Http请求转Https
1 @Bean
2 public ServletWebServerFactory servletContainer() {
3 TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory(){
4 protected void postProcessContext(Context context) {
5 SecurityConstraint securityConstraint = new SecurityConstraint();
6 securityConstraint.setUserConstraint("CONFIDENTIAL");
7 SecurityCollection collection = new SecurityCollection();
8 collection.addPattern("/*");
9 securityConstraint.addCollection(collection);
10 context.addConstraint(securityConstraint);
11 }
12 };
13 tomcat.addAdditionalTomcatConnectors(httpConnector());
14 return tomcat;
15 }
16
17 @Bean
18 public Connector httpConnector() {
19 Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
20 connector.setScheme("http");
21 connector.setPort(80); //Connector监听的http的端口号
22 connector.setSecure(false);
23 connector.setRedirectPort(8181); //监听到http的端口号后转向到的https的端口号
24 return connector;
25 }
将证书放到nginx的config目录下,配置443端口转发到应用端口8181:
server {
listen 443 ssl;
ssl_certificate "/etc/nginx/server.crt";
ssl_certificate_key "/etc/nginx/server.key";
##下面信息要根据实际去配
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
##下面信息要根据实际需求去配用
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
add_header Content-Security-Policy "upgrade-insecure-requests";
proxy_pass https://127.0.0.1:8181;
proxy_redirect default;
}
}
其中add_header Content-Security-Policy "upgrade-insecure-requests"这一行是为了解决以下的错误
chunk-libs.8b3cc80f.js:70 Mixed Content: The page at 'https://xx' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://xxx'. This request has been blocked; the content must be served over HTTPS.
配置成功后用https+服务器ip+服务Url,访问项目,压缩功能可以正常使用,不再报错。
SharedArrayBuffer is not defined 问题的解决以及服务器https证书的配置的更多相关文章
- 小程序-报错 xxx is not defined (已解决)
小程序-报错 xxx is not defined (已解决) 问题情境: 这样一段代码,微信的小程序报错 is not defined 我 wxml 想这样调用 //wxml 代码 <view ...
- py+selenium 报错NameError: name 'NoSuchElementException' is not defined【已解决】
报错:NameError: name 'NoSuchElementException' is not defined 如图 解决方法: 头部加一句:from selenium.common.exc ...
- SpringBoot之解决云服务器VPS在所处云端集群的内网不能解析域名的问题:java.net.UnknownHostException:abc.cn: Temporary failure in name resolution
一.起因与原因分析过程 前端小伙伴儿告诉我,说服务器崩了. 请求数据接口,接口有响应,但报的json提示指向:数据库异常错误. 遂登陆云主机查看日志,核心记录显示如下: 2018-11-09 22:1 ...
- 安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决
安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决 请把手机时间调成当前时间.
- 使用Dhcpstarv解决DHCP服务器冲突问题
场景: 内网环境需要开启多个DHCP服务器,分别给不同的设备进行PXE安装. 存在的问题: 多个DHCP的情况下,设备在启动时随机从一个DHCP服务器获取IP(哪个DHCP服务器先响应就从哪个获取)并 ...
- 转:解决tomcat服务器跨域问题
原文地址: 解决tomcat服务器跨域请求问题 注:还未测试 在tomcat 的web.xml 配置文件中加入如下配置过滤器 (如web.xml中有多个filter时要把下面配置放在最前端) < ...
- Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展
默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...
- k8s dashboard 解决secret自建证书导致浏览器访问限制
解决参考: https://www.jianshu.com/p/c6d560d12d50 熟悉dashboard yaml文件所创建的资源 wget https://raw.githubuserc ...
- springboot中解决servlet乱码问题,使用配置类注册过滤器解决
8.1 使用传统的Spring提供的字符编码过滤器 在03-springboot-web中的ServletConfig中配置文件类,注册字符编码过滤器 @Bean public FilterRegis ...
- 解决FTP服务器上中文名文件下载后为空的问题
转: 解决FTP服务器上中文名文件下载后为空的问题 2017年07月20日 15:19:21 代码的寂寞 阅读数 2428 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
随机推荐
- 【微信小程序的开发】初步认识
目录 项目结构 页面组成 json配置文件 app.json project.config.json sitemap.json 每个页面的json 实例 wxml 标签名称 ...
- Angular报错:Error: Unknown argument: spec
解决方案 使用--skip-tests代替 效果展示 可以看到spec.ts消失了 参考链接 https://stackoverflow.com/questions/62228834/angular- ...
- QLabel类中的常用方法&信号
setAlignment: 按固定值方式对齐文本 Qt.AlignLeft:水平方向靠左对齐 Qt.AlignRight:水平方向靠右对齐 Qt.AlignCenter:水平方向居中对齐 Qt.Ali ...
- 五 Android Capabilities讲解(转)
1.Capabilities介绍 可以看下之前代码里面设置的capabilities DesiredCapabilities capabilities = new DesiredCapabilitie ...
- 从原理聊JVM(四):JVM中的方法调用原理
1 引言 多态是Java语言极为重要的一个特性,可以说是Java语言动态性的根本,那么线程执行一个方法时到底在内存中经历了什么,JVM又是如何确定方法执行版本的呢? 2 栈帧 JVM中由栈帧存储方法的 ...
- HDU 3829 Cat VS Dog 猫和狗(二分图)结题报告
听学长说这道题很ex,但是思路想到的话还是挺简单的. 可能是受上一道题(放置机器人)的启发,也是找互相冲突的点连线. 但是并不是完全一样(废话)放置机器人那道题是找到冲突点连线后直接求最大匹配即可. ...
- 保护个人数据安全,使用luks加密硬盘分区
create:2023-01-24 17:44:44 准备工作 新硬盘4T,无数据.在root用户或sudo状态下执行. 首先创建分区表,由于mbr最大支持只有2T,因此分区表创建为gpt格式. 然后 ...
- 你准备好了吗,9月19日Java21要来了
前言 9月份的TIOBE编程语言榜单已公布,Python依然是第一,Java第四. 而这个月还有一个重要的事情,就是9月19日Java21将会全面发布,一段时间没关注的我一口老血喷在屏幕上. 我记得我 ...
- 图解Spark排序算子sortBy的核心源码
原创/朱季谦 一.案例说明 以前刚开始学习Spark的时候,在练习排序算子sortBy的时候,曾发现一个有趣的现象是,在使用排序算子sortBy后直接打印的话,发现打印的结果是乱序的,并没有出现完整排 ...
- C++的动态分派在HotSpot VM中的重要应用
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定.C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持 ...