最近工作碰到的一个天坑,刚进公司没几天开始上手项目,一个老员工跑路前,对前端做了一些修改,但是没人知道改了什么,只知道从那以后项目在预生产环境中访问前端会报错,生产环境反而正常。
附图如下:
有小伙伴一眼就能看出问题在哪里吗?反正我是搞了一天没发现问题,我一直以为是ssl证书的事情,因为刚到公司,也不知道老员工干了什么,报错了就让我处理bug。一顿好找,大概猜出前端某个地方加了某些东西,但是问老员工的时候 老员工也不说(跳槽了)。网上查了一堆解决方案都不符合。
最后终究还是这名老员工告诉了我,他在入口也就是index.html上面加了一行代码
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
这行代码是干什么的呢?
大概的作用就是,生产环境是https的,但是有时候会发起http请求,例如oss的图片默认是http的,这时候就会报错,所以在入口加入这行代码,把http请求升级成https,这样https调https就不会报错!!
但是预生产不是https,所以就变成了http去调 https,因此项目报错了!!!
真是天坑啊,加了这种标签一声不吭,苦了我刚进来的一顿好找。
现在部署预生产都要注释掉这行代码
如另一篇文章一样(有兴趣可以看一下):一个HTTPS转HTTP的Bug,他们竟然忍了2年?原谅我无法接受,加班改了! - 知乎