React应用中script标签相对路径转换为绝对路径的解析
在构建React应用时,开发者可能会遇到script标签中的相对路径被浏览器解释为绝对路径的情况。例如,预期请求路径为http://app.xxx.com/application/main.js
,但实际请求却变成了http://app.xxx.com/main.js
。本文将分析这种现象背后的机制。
问题描述中,提问者观察到React应用中img
标签的src
属性和script
标签的src
属性中的相对路径都被转换为绝对路径,这与预期的基于当前目录的相对路径请求不符。
根本原因在于
标签的使用。
标签定义了所有相对URL的基准URL。在HTML文件中设置
标签后,所有相对路径都将相对于
标签中指定的URL进行解析。 React应用的入口HTML文件很可能包含一个
标签,将基准URL设置为空(根路径)。因此,即使src
属性中没有明确指定绝对路径,浏览器也会根据
标签的设置,将相对路径转换为以根路径为起点的绝对路径进行请求。
这种路径转换完全在前端通过HTML标签控制,无需后端配置。 理解
标签的作用是解决此类问题的关键。