was loaded over HTTPS, but requested an insecure frame
放那记录一次坑爹的经历。在开发的过程中,项目应用了wujie微前端,于是出现了以下的问题:我在访问基座资源页面的时候,一切正常,当我切到子应用路由的时候,页面一直加载。发现是在基座访问时,路由有一层重定向,把原本属于https的资源转成了http,然而内部的子应用又是https的,所以出现了访问不一致的情况。
·
记录两个坑爹的经历。在开发的过程中,项目应用了wujie微前端,于是出现了以下的问题:
一、问题:微前端访问子应用的时候报错was loaded over HTTPS, but requested an insecure frame
我在访问基座资源页面的时候,一切正常,当我切到子应用路由的时候,页面一直加载。控制台报错:

ixed Content: The page at 'https://yourdomin/xxx/#/llm/experience' was loaded over HTTPS, but requested an insecure frame 'http://yourdomin/xxx#/'. This request has been blocked; the content must be served over HTTPS.
发现是在基座访问时,路由有一层重定向,把原本属于https的资源转成了http,然而内部的子应用又是https的,所以出现了访问不一致的情况。
二、问题:nginx反向代理到Https后,请求Http资源报错blocked mixed-content

三、解决办法:
方案一(nginx):
在基座的,nginx 里header中加入 Upgrade-Insecure-Requests,会告诉浏览器可以把所属本站的所有 http 连接升级为 https 连接,外站请求保持默认
add_header Content-Security-Policy “upgrade-insecure-requests”;

方案二(index.html):
在基座的index.html入口文件添加以下头
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
方案一、二弊端,对于私有化部署场景支持的不好,私有化部署场景大多是http开头的,不会升级成https。所以经实际验证,部署时如果发现有问题,可以将这行配置删掉即可解决问题
方案三(运维层面解决路由被重定向的问题):
因为目前/会被默认重定向,这个过程中https被转为了http,而子应用并未被转发,子应用https,主应用变成了http,导致了问题出现
更多推荐

所有评论(0)