一尘不染

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

jsp

我试图了解有关JSP解释路径的更多信息。

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

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

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

但是,我猜想由于在JSP中服务器将斜杠解释为Web应用程序的根,所以我的基础不能为例如:

<base href="/foo"/>

然后在表单中有:

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

因为这样会导致将表单提交给mydomain.com/extension而不是mydomain.com/foo/extension。我是否正确理解了这一点,因为斜杠具有特殊含义,因此通常需要在基础HREF上加上反斜杠才能获得所需的效果?

谢谢


阅读 228

收藏
2020-06-08

共1个答案

一尘不染

并不是的。

浏览器不只是将基本href属性和相对URL 串联在一起。而是使用<base>标记设置 文档基本URL ,然后将其用于动态生成新路径。

您可以在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  -->
2020-06-08