我有一个小网页项目,我有很多页面和索引/ ToC文件。 toc文件位于toc.html
项目的根目录中。这些页面分布在几个子目录中,并包含带有iframe
的toc。
该项目不需要Web服务器,因此我可以在目录中创建HTML并在浏览器中浏览它。问题是,当toc.html
的JavaScript想要调用页面中的函数(违反相同的原始策略)时,我遇到了XSS问题。
所以我在标题中添加了base
个标签,其中包含toc.html
目录的相对URL。这适用于Konqueror,但在Firefox中,我必须使用绝对路径或toc甚至不会显示:(这是一个例子:
<?xml version='1.0' encoding='utf-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="../" target="_top" />
<title>Project 1</title>
</head>
<body>
<iframe class="toc" frameborder="0" src="toc.html">
</iframe>
</body>
</html>
此文件位于子目录page
中。 Firefox甚至不会加载它,说它找不到page/toc.html
。
有解决方法吗?我真的想避免导出中的绝对路径,以便在任何地方保持相同(本地和我以后在Web服务器上传时)。
答案 0 :(得分:7)
在HTML4中,<base>
需要absolute URI。但是,由于HTML5现在得到了广泛的支持,应该提到HTML5 <base>
tag accepts an URL,它可以是绝对的,也可以是相对的;这实际上意味着您现在可以使用相对路径而不是绝对URI。