【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 如果没有,直接默认/即可。

相关文章
|
8月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
546 0
|
移动开发 前端开发 API
鸿蒙web加载本地网页资源异常
在鸿蒙NEXT Api 12中,为解决Web组件加载本地资源(如图片、CSS等)失败的问题,我们采用拦截机制。具体步骤如下: 1. **替换路径**:通过正则表达式将HTML和CSS中的资源路径替换为带有标记的URL(如`http://local`),以便后续识别。 2. **拦截与返回**:在资源加载时,拦截带有标记的URL,读取对应的本地文件并返回给Web组件。此过程确保了本地资源能正确加载和显示。 代码实现包括路径替换、资源拦截及响应构建,确保Web页面能够顺利加载本地资源。
642 7
【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext' is not recognized as the name
【Azure Web Job】Azure Web Job执行Powershell脚本报错 The term 'Select-AzContext' is not recognized as the name
135 3
|
安全 应用服务中间件 网络安全
修复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. 的问题
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
238 0
|
Linux Python
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https
296 0
|
安全 开发者 UED
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
261 0
|
机器学习/深度学习 人工智能 Apache
人工智能平台PAI操作报错合集之alink任务可以在本地运行,上传到flink web运行就报错,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
前端开发 计算机视觉
视觉智能开放平台操作报错合集之人脸对比1:1,采用web前端直接调用,使用了base64处理图片,提示http错误码414,该如何处理
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
292 0