从HTML <base />重定向

时间:2016-03-29 21:46:41

标签: javascript html

我正在处理一个现有的应用程序,它本质上是一个瘦HTML页面内的非常大的.js文件。该脚本通过相对URI引用assets/目录中的大量文件。

我想在多个测试服务器上运行该应用程序,而无需A)将数千个资产文件复制到每个测试服务器,或者B)重写JS中的每个资产引用以使用绝对URL。

我提出的解决方案是仅将.js和.html文件复制到测试服务器,并使用HTML <BASE>标记将资产重定向到生产服务器。

<!DOCTYPE HTML>
<HTML><HEAD><TITLE>MyApp</TITLE>
<BASE href="https://www.example.com/production-app.html" />
</HEAD>
<BODY>
<SCRIPT src="./app.js"></SCRIPT>
</BODY></HTML>

我现在唯一的问题是<BASE>还重定向<SCRIPT>标记以加载app.js的生产副本,而不是我的测试副本。 有没有办法从<BASE>中排除这一个引用并强制它查找与html文件相同的目录?

我通过在脚本标记中使用测试服务器的绝对URL找到了一种解决方法,但这需要在每个测试服务器上单独复制HTML,并且看起来很笨拙。

1 个答案:

答案 0 :(得分:2)

您无法排除链接,因为这是base标记的预期行为,您实际上需要指定一个完整的绝对网址来覆盖基础href。