JSTL/JSP 生成 url 并强制使用 HTTP/HTTPS



我正在使用c:url来生成相对于上下文路径的URL。但是,如果在安全页面中,所有网址都将是https,或者在不安全的页面中是http。我已经设置了我的服务器,即使我使用 http 访问例如登录页面,它也会重定向到 https,但在登录页面中,我使用的所有相对 url 都将是 https。

例如,我想将主页链接设为 http,这样它就不会执行 https 请求,然后再次重定向到 http !

在JSP中生成URL时,有没有办法强制安全(https)或不安全(HTTP)

提前感谢...

我发现处理此问题的最简单方法是使用以下方法之一:

http://${pageContext.request.serverName}<c:url value="/my/path"/>

https://${pageContext.request.serverName}<c:url value="/my/path"/>

例如(在您的 JSP 中):

You can
<a href="https://${pageContext.request.serverName}<c:url value='/reset-password.jsp'/>">reset your password</a>
if you like.

如果你查看从c:url生成的HTML,你会发现它们就像这不会告诉您此资源将来自哪个主机或通过什么协议,但您的浏览器将采用与您所在的页面相同的主机和协议。

如果您的页面位于 http://example.com/mysite 并且您希望链接到 https://secure.example.com/mysite 上的子页面,则这被视为当前 Web 应用程序之外的链接(即使该链接背后的代码最终将由同一 Web 应用程序处理)。像对待链接到其他外部站点一样对待它们。

最新更新