使用基本标记时的相对URL斜杠

时间:2014-09-25 15:50:01

标签: html jsp

我正在尝试更多地了解使用JSP解释路径的方式。

将HTML基本标记与相对URL结合使用时,使用斜杠结束基本href是否相当标准?

我问的原因是因为我经常需要根据JSP中的上下文根来表达事物(例如,对于表单操作),以便在我映射表单时将表单路由到相应的servlet在web.xml中。

大多数时候我每次都会使用${pageContext.request.contextPath},直到我了解了基本标签。

但是,我猜测,因为在JSP中,斜杠被服务器解释为Web应用程序的根,我不能拥有我的基础,例如:

<base href="/foo"/>

然后在表单中有:

<form action="/extension">
...
</form>

因为这会导致表单提交到mydomain.com/extension而不是mydomain.com/foo/extension。我是否理解正确,因为斜杠具有特殊含义,您通常需要用反斜杠结束基本HREF以获得所需的效果?

由于

1 个答案:

答案 0 :(得分:9)

不是。

浏览器不会简单地连接您的基本href属性和相对网址。 相反,<base>标记设置文档基本网址,然后用于动态生成新路径。

您可以在WHATWG HTML规范中看到一个有趣的示例:

<base href="http://www.example.com/news/index.html">
<p>Visit the <a href="archives.html">archives</a>.</p>

请注意,href属性甚至以文件名结尾。

这意味着如果您没有在基础href属性中添加尾部斜杠,foo将被视为路径的最后一个易失性部分,并且基本上将被删除。举例来说:

<base href="http://www.example.com/news/index.html" />
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png -->

<base href="http://www.example.com/news/" />
<img src="ball.png" /> <!-- GET http://www.example.com/news/ball.png -->

<base href="http://www.example.com/news" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png -->

<base href="http://www.example.com/" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png -->

<!-- If served from http://www.example.com: -->
<base href="/" />
<img src="ball.png" /> <!-- GET http://www.example.com/ball.png  -->