html中的相对路径解析

HTML中的相对路径解析

在项目中遇到过一个奇怪的问题,现象是通过HTTPS协议去访问项目,结果浏览器发出的样式请求却是HTTP协议,导致了跨域,无法加载样式文件。

项目是使用JSP来做的HTML输出,去查看JSP代码,看到样式链接的写法为相对路径

例如'./bootstarp.css',然后浏览器显示的URL协议确实是HTTPS,按道理说相对路径的解析应该也是HTTPS才对

百思不得其解

自然就想知道浏览器是如何解析相对路径的,查阅资料得知

浏览器解析相对路径是先查看有没有base标签

如果有就会使用base标签的值来拼接相对路径

如果没有就会自己获取当前URL来处理拼接

解决

再次查看JSP文件,发现确实是有base标签,但也没有写死,base标签的值是从request获取的,那就是服务端获取到的request的URL是HTTP协议了

项目的访问链路是根Nginx-》项目Nginx-》Tomcat

排查项目Nginx发现Nginx没有配置HTTPS协议…反向代理转发的是HTTP

在beta环境,使用openssl创立证书,然后发现nginx没有安装SSL模块,无法开启HTTPS,还得重新编译安装…Tomcat也没有开启HTTPS…用JDK的keytool生成JKS证书给Tomcat开启HTTPS

万事俱备,重新访问HTTPS的beta环境发现依旧无法发出正确的请求,只有一个地方没有排查了,去找根Nginx的负责人获取项目的Nginx配置发现,HTTP、HTTPS反向代理的都是HTTP协议…申请更改后果然解决了问题


html中的相对路径解析
https://blog.gugu.dev/2024-02-21/html中的相对路径解析/
作者
MinMin
发布于
2024年2月21日
许可协议