首页 > 其他分享 >解决Mixed Content: The page at https://* was loaded over HTTPS, but requested an insecure XMLHttpReque

解决Mixed Content: The page at https://* was loaded over HTTPS, but requested an insecure XMLHttpReque

时间:2023-04-04 11:02:17浏览次数:53  
标签:requested http HTTPS insecure ssl api https com

问题:

前端页面调用后端接口加载不出来

 

原因分析:

通过查看浏览器调试 console 日志,得到报错如下

  原文:

Mixed Content: The page at https://* was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint http://*. This request has been blocked; the content must be served over HTTPS

  译文:

混合内容:https://*上的页面是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点http://*.此请求已被阻止;内容必须通过HTTPS提供

 

结合业务场景:https协议的网站下请求http的资源

以及根据报错日志的问题描述:https协议的网站请求http协议的资源被浏览器任务不安全,请求被拦截

综合分析后得出结论:

发生该错误的原因由浏览器的安全机制引起的,一个最好的解决办法就是都是用http的请求,也免去了申请证书,但浏览器一直报不安全的话可能会散失一些用户。所以还是得安排上https协议,如果要请求的资源服务器支持https协议,我们只需要把请求的http改成https即可;如果不支持的话可以选择给资源服务器安排上ssl证书,但很多时候我们没办法自行更改资源服务器。

 

解决方案:

这个是在没法让资源方改为https时的下策

我们使用的是Nginx服务,因此可以利用Nginx的反向代理来解决该问题

这里先举个例子

例如 我们这边的网址是https://123.com      调用后端的网址是 http://456:77/api/xxx

这个时候直接调用是会报如上错误的,借用nginx的反向代理可以暂时绕过这个限制,即把后端接口地址替换为我们的https地址,然后通过反向代理来代理到http的地址上

具体操作如下:

1.在nginx中配置反向代理

将以下配置放置在http{}内

server {
    listen       443 ssl;
    # 你的域名
    server_name  123.com;
 
    # 你的证书 crt对应的是公钥 key对应的是私钥
    ssl_certificate      xxxxx.crt;
    ssl_certificate_key  xxxxx.key;
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
 
    # 访问根路径跳转页面
    # 如:https://123.com/
    location / {
        root   html;
        index  index.html index.htm;
    }
 
    # 访问后端http接口/api的时候代理到服务器端部署的域名上
    # 如:https://123.com/api
    location /api {
        proxy_pass http://456:77/api;
    }
    
}

重启nginx,使配置生效

2.修改前端调用地址

把原本的http://456:77/api/xxx 修改为 https://123.com/api/xxx,测试成功

 

后记:

其实这只是临时解决方案,因为会有问题,就是如果http://456:77/api/xxx 接口里引用的链接同样为http,还是会报错,虽然可以调用api接口了,但是可能会有部分显示不全

最好的方式还是让资源方也修改为https,才能解决根本问题!

 

参考文档:

https://blog.csdn.net/qq_38238956/article/details/126059092

标签:requested,http,HTTPS,insecure,ssl,api,https,com
From: https://www.cnblogs.com/allay/p/17285568.html

相关文章

  • nginx hyperf ssl https 环境。hyperf-https-ssl
     usernginxnginx;worker_processes 8;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid       logs/nginx.pid;events{   worker_connections 1024;}http{   include      mime.ty......
  • Windows用内网跑https
    1、windows系统:直接下载解压即可。下载链接:https://pan.baidu.com/s/11js65YwFdKaBifxOi-xA5g?pwd=8855  提取码:88552.安装CA根证书到本地,下载程序进行解压,放到windows相应目录并解压,以管理员身份运行下面指令(mkcert表示mkcert-v1.4.1-windows-amd64.exe的完整路径加+mkc......
  • Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析
    Sevlet规范:HttpServlet类和HttpServletRequest接口源码解析每博一文案命运总是不如人愿,但往往是在无数的痛苦总,在重重的矛盾和艰辛中,才是人成熟起来。你,为这瞬间的辉煌,忍耐了多少暗淡无光的日月,你会死亡,但你也会证明生命有多强大。一次邂逅,一次目光的交融,就是永远的合二为......
  • 怎么在springboot中配置https证书的详细教程
    前言由于小程序需要https,然后之前申请的域名过期了,用了两年由于忘记续费要将域名赎回居然要1200....想了一下之前还有另一个域名,干脆就用这个域名弄个二级域名出来,所以二级域名建立出来后需要在springboot项目上开启https访问废话不多说,开整在阿里云新建二级域名这个......
  • 网站https加密
    Whenaclient(e.g.,awebbrowser)establishesasecureHTTPSconnectionwithaserver,thefollowingstepsoccurtoensurethesecurityofthecommunication:TheclientinitiatestheHTTPSconnectionbyrequestingasecureresourcefromtheserver,ty......
  • 如何使用HTTPS加密保护网站?
    加密Web内容并不是什么新鲜事:自发布通过SSL/TLS协议来加密Web内容的规范以来,已经过去了近20年。然而,近年来,运行安全的HTTPS加密Web服务器已经从一种选择变成了一种安全防护的必需品。攻击者继续寻找并找到窃取用户和Web服务之间发送的信息的方法,通常是通过利用通过超文本......
  • TCP/IP和OSI的基础层级关系图,TCP/IP四层模型关系,TCP/IP和HTTP/HTTPS的关系图
    TCP/传输控制协议英文全称TransmissionControlProtocol。 IP/网际互连协议英文全称InternetProtocol。tcp和ip是互联网众多通信协议中最为著名的。1.OSI参考模型与TCP/IP的关系计算机网络分层模型OSI七层模型TCP/IP四层模型TCP/IP五层模型应用层应用层应用层应用程序表示层会......
  • cordova android使用https协议
     在cordvoa添加平台后,cordovalib的文件夹下SystemWebViewClient.java文件(code\platforms\android\CordovaLib\src\org\apache\cordova\engine);修改:onReceivedSslError,方法,只需按以下方法修改publicvoidonReceivedSslError(WebViewview,SslErrorHandlerhandler,SslErr......
  • ubunut apache2下配置和https重定向
    apache2的目录文件详解Apache在启动的时候自动读取文件配置信息apache2引用到以下文件;#包含动态模块的配置include/etc/apache2/mods-enabled/*.loadinclude/etc/apache2/mods-enabled/*.conf#包含用户自己的配置include/etc/apache2/httpd.conf#包含端口监听的配置incl......
  • Android https忽略证书信任问题
    【第一部分,忽略证书信任问题】直接去第二部分性能问题搬运自:https://blog.csdn.net/lizeyang/article/details/18983843java程序在访问https资源时,出现报错sun.security......