问题

前端使用了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证书的配置的更多相关文章

  1. 小程序-报错 xxx is not defined (已解决)

    小程序-报错 xxx is not defined (已解决) 问题情境: 这样一段代码,微信的小程序报错 is not defined 我 wxml 想这样调用 //wxml 代码 <view ...

  2. py+selenium 报错NameError: name 'NoSuchElementException' is not defined【已解决】

     报错:NameError: name 'NoSuchElementException' is not defined  如图 解决方法: 头部加一句:from selenium.common.exc ...

  3. SpringBoot之解决云服务器VPS在所处云端集群的内网不能解析域名的问题:java.net.UnknownHostException:abc.cn: Temporary failure in name resolution

    一.起因与原因分析过程 前端小伙伴儿告诉我,说服务器崩了. 请求数据接口,接口有响应,但报的json提示指向:数据库异常错误. 遂登陆云主机查看日志,核心记录显示如下: 2018-11-09 22:1 ...

  4. 安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决

    安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决 请把手机时间调成当前时间.

  5. 使用Dhcpstarv解决DHCP服务器冲突问题

    场景: 内网环境需要开启多个DHCP服务器,分别给不同的设备进行PXE安装. 存在的问题: 多个DHCP的情况下,设备在启动时随机从一个DHCP服务器获取IP(哪个DHCP服务器先响应就从哪个获取)并 ...

  6. 转:解决tomcat服务器跨域问题

    原文地址: 解决tomcat服务器跨域请求问题 注:还未测试 在tomcat 的web.xml 配置文件中加入如下配置过滤器 (如web.xml中有多个filter时要把下面配置放在最前端) < ...

  7. Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

    默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...

  8. k8s dashboard 解决secret自建证书导致浏览器访问限制

    解决参考: https://www.jianshu.com/p/c6d560d12d50   熟悉dashboard yaml文件所创建的资源 wget https://raw.githubuserc ...

  9. springboot中解决servlet乱码问题,使用配置类注册过滤器解决

    8.1 使用传统的Spring提供的字符编码过滤器 在03-springboot-web中的ServletConfig中配置文件类,注册字符编码过滤器 @Bean public FilterRegis ...

  10. 解决FTP服务器上中文名文件下载后为空的问题

    转: 解决FTP服务器上中文名文件下载后为空的问题 2017年07月20日 15:19:21 代码的寂寞 阅读数 2428  版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

随机推荐

  1. Redis核心技术与实践 03 | 高性能IO模型:为什么单线程Redis能那么快?

    原文地址:https://time.geekbang.org/column/article/268262 个人博客地址:http://njpkhuan.cn/archives/redis-he-xin ...

  2. Cilium系列-1-Cilium特色 功能及适用场景

    系列文章 Cilium 系列文章 Cilium 简介 Cilium 是一个开源的云原生解决方案,用于提供.保护(安全功能)和观察(监控功能)工作负载之间的网络连接,由革命性的内核技术 eBPF 提供动 ...

  3. Linux下实现程序开机自启(rc.local 和 systemctl)

    需求: 实现了一个程序,需要在ubuntu上跑起来.能开机自启,且崩溃了也能自己重启.有两种实现方式,个人推荐第二种. 方式1: 实现方式: 直接将要启动程序的运行命令加在 /etc/rc.local ...

  4. 【技术实战】Vue技术实战【三】

    需求实战一 效果展示 代码展示 <template> <div style="display: flex;"> <div style="di ...

  5. js的一些小问题集合

    1.等于号的应用 function reverse(){ var checkbox = document.getElementsByName("hobby"); for (let ...

  6. 批量获取FreeSWITCH所有分机号及其密码

    前言 有次项目上需要获取所有FreeSWITCH注册分机的分机号和密码,就用python写了个小脚本来获取. 可以先把freeswitch/conf/directory/default/目录下的所有x ...

  7. Ansible快速复习

    本文章是上一篇ansible自动化运维的快速复习以及项目上用到的一些命令,针对长时间未使用ansible,导致命令忘记的同学,帮助快速回忆.详细内容还是看上一章'ansible自动化运维'. 查看版本 ...

  8. 一篇关于获得拼多多商品详情 API的使用说明

    拼多多(Pinduoduo)是中国一家快速发展的电商平台,为了帮助开发者更好地接入拼多多,平台提供了丰富的 API 接口供开发者使用,其中包括获取拼多多商品详情的 API.接下来,我们将介绍如何使用拼 ...

  9. Linux 干货整理(持续更新)

    博客地址:https://www.cnblogs.com/zylyehuo/ 如果虚拟机开机没有 ip 怎么办 1.vim编辑网卡配置文件,修改如下参数 [root@s25linux tmp]# cd ...

  10. shell、python时间函数小结

    有时需要写一些定时任务脚本,简单总结一下,备忘. 1. 获取当前时间 python 在windows下精确到0.001秒,linux下时间精度为0.000001秒 >>> impor ...