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中的相对路径解析/