【WEB】当HTTPS资源引入HTTP导致报错blocked:mixed-content (混合加载/Mixed Content)如何解决

简介: 【WEB】当HTTPS资源引入HTTP导致报错blocked:mixed-content (混合加载/Mixed Content)如何解决

"blocked:mixed-content" 是一个安全性警告,表示当前页面加载的资源存在混合内容(Mixed Content)。

混合加载介绍

我们可以稍微了解下这个错误是如何出现的。
混合内容指的是同时使用了安全的 HTTPS协议和不安全的HTTP 协议加载的网页内容。在使用 HTTPS 加密连接的网站中,浏览器会阻止加载非安全的 HTTP 资源,以确保用户数据的安全性和完整性。

要解决 "blocked:mixed-content" 警告,有以下几个步骤可以尝试:

  1. 检查页面中加载的资源(如图片、脚本、样式表等),确保它们都使用了 HTTPS 协议进行加载。将所有的 HTTP 链接替换为对应的 HTTPS 链接。
  2. 如果你无法控制某些资源的加载方式(例如由其他网站提供的第三方资源),可以尝试使用该资源的 HTTPS 版本(如果提供的话),或者寻找可替代的资源。
  3. 在服务器端进行配置,启用 HTTPS,并确保所有资源通过HTTPS 加密协议进行访问。
  4. 检查浏览器控制台输出的详细错误信息,以便更好地定位混合内容的来源和具体原因。

解决办法

一般情况下,如果我们使用的是第三方接口服务,或者是不太好操作的服务。想把他变为https不是很容易的。这个时候我推荐一个方法。
首先我们需要有个二级域名,注意。这个域名的数量取决于你有几个需要处理的API服务

例如:我们的二级域名是 xxx-api.zcsuper.cn 服务地址为 http://127.1.1.17:8080

Linux解决

第一步:开启SSL

因为我们要设置Nginx代理,所以提前开启下SSL证书,同时要为 top-api.zcsuper.cn 域名使用 Let's Encrypt 的 SSL 证书,并开启强制 HTTPS 跳转

  1. 安装 Certbot:

    • 在 Linux 上,可以使用 Certbot 工具来获取和管理 Let's Encrypt 的 SSL 证书。根据你的 Linux 发行版,使用适当的命令来安装 Certbot。
  2. 获取 SSL 证书:

    • 运行 Certbot 命令来获取 SSL 证书,并按照提示提供必要的信息。通常,命令类似于:

      sudo certbot certonly --nginx -d yourdomain.com
      

      这将会与 Nginx 进行交互并获取证书。

  3. 配置 Nginx 使用 SSL 证书:

    • 打开 Nginx 的配置文件,在 server 块中添加 SSL 配置项。例如:

      server {
             
             
          listen 80;
          server_name top-api.zcsuper.cn;
          return 301 https://{
             
             mathJaxContainer[0]}request_uri;
      }
      
      server {
             
             
          listen 443 ssl;
          server_name top-api.zcsuper.cn;
      
          ssl_certificate /etc/letsencrypt/live/top-api.zcsuper.cn/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/top-api.zcsuper.cn/privkey.pem;
      
          root /var/www/html;
          index index.html;
      
          location / {
             
             
              try_files {
             
             mathJaxContainer[1]}uri/ =404;
          }
      }
      

      这个配置中,我们添加了一个监听 443 端口的 server 块,并指定了 SSL 证书的路径。

  4. 保存配置文件并重新加载 Nginx:

    • 保存修改后的配置文件。
    • 使用命令重新加载 Nginx:sudo service nginx reloadsudo systemctl reload nginx

第二步:设置Nginx

最后一步配置
要给 top-api.zcsuper.cn 设置反向代理为 http://127.1.1.17:8080,你可以按照以下步骤进行操作:

  1. 打开 Nginx 配置文件:

    • 通常,Nginx 的配置文件位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录下。
  2. 在配置文件中添加反向代理配置:

    • 在合适的位置,添加一个新的 server 块来定义反向代理规则。例如:

      server {
             
             
          listen 80;
          server_name top-api.zcsuper.cn;
      
          location / {
             
             
              proxy_pass http://127.1.1.17:8080;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
      

      这个配置将会将所有请求发送到 http://127.1.1.17:8080

  3. 保存配置文件并重启 Nginx:

    • 保存修改后的配置文件。
    • 使用命令重启 Nginx:sudo service nginx restartsudo systemctl restart nginx
  4. 配置 DNS 解析:

    • 打开 DNS 管理界面(可能是域名注册商提供的管理界面)。
    • 添加一个新的 CNAME 记录,将 top-api.zcsuper.cn 指向你的服务器 IP 地址。

完成以上步骤后,top-api.zcsuper.cn 将会被设置为反向代理,将请求转发到 http://127.1.1.17:8080
这个时候你的https可以直接请求https://top-api.zcsuper.cn了,这样就不会出现问题

宝塔面板解决

宝塔的操作就相对简单很多了。

第一步:开启SSL

  1. 登录宝塔面板:

    • 打开你的宝塔面板登录页面,并使用管理员账户登录。
  2. 添加网站:

    • 在宝塔面板中,点击左侧菜单中的「网站」选项,然后点击「添加站点」按钮。
    • 填写网站相关信息,包括域名、网站目录等,然后点击「提交」按钮完成网站添加。
  3. 开启 SSL 功能:

    • 在宝塔面板中,找到刚才添加的网站,点击网站对应行右侧的「设置」按钮。
    • 在设置页面中,找到「SSL」选项卡,然后点击「申请」按钮。
  4. 配置 SSL 证书:

    • 在 SSL 设置页面中,选择「Let's Encrypt」作为 SSL 证书的类型。
    • 如果需要为所有子域名也申请 SSL 证书,请勾选「保护所有子域名(通配符)」选项。
    • 点击「提交」按钮来申请并安装 Let's Encrypt 的 SSL 证书。
  5. 完成配置:

    • 等待证书申请和安装的过程完成,宝塔面板会自动为你的网站配置好 SSL 证书。
    • 之后,你的网站将通过 HTTPS 进行访问,并且浏览器会显示已经使用了有效的 Let's Encrypt 证书。

image.png

第二步:设置Nginx

设置代理也是在这个页面

image.png

有个注意的点就是代理目录 一般来说有的人接口可能是http://127.1.1.17:8080/api/getList等,/api这个在每一个请求地址都会出现,那么我们就设置为/api 如果没有,直接默认/即可。

相关文章
|
12月前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
688 18
|
12月前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
326 14
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之遇到报错:HTTP状态码400,该如何处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
253 5
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
757 5
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
502 4
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
954 7
|
存储 前端开发 NoSQL
拿下奇怪的前端报错(四):1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点
在一个使用MongoDB GridFS存储文件的项目中,音频和视频文件在大部分设备上播放时长显示为无限,而单独播放则正常。经调查发现,问题源于HTTP Range请求的处理不当,导致最后一个字节未被正确返回。通过调整请求参数,使JavaScript/MongoDB的操作范围与HTTP Range一致,最终解决了这一问题。此案例强调了对HTTP协议深入理解及跨系统集成时注意细节的重要性。
485 0
|
SQL JavaScript 前端开发
函数计算操作报错合集之HTTP触发器报404错误,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
246 1
|
安全 应用服务中间件 网络安全
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题