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

JSTL/JSP生成url并强制HTTP/HTTPS,jsp,jstl,Jsp,Jstl,我正在使用c:url生成相对于上下文路径的url。 但是,如果在安全页面中或在不安全页面中,所有URL都将是https。 我已经设置了我的服务器,这样即使我使用http访问登录页面,它也会重定向到https,但在登录页面中,我使用的所有相对URL都将是https 例如,我想将主页链接设置为http,这样它就不会执行https请求,然后再重定向到http 在JSP中生成URL时,是否有方法强制安全(https)或不安全(http) 提前感谢…如果您查看从c:url生成的HTML,您将看到它们如下所

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

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

在JSP中生成URL时,是否有方法强制安全(https)不安全(http)


提前感谢…

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


如果您的页面处于打开状态,并且您希望链接到上的子页面,则这将被视为当前webapp之外的链接(即使该链接背后的代码最终将由同一webapp处理)。像链接到其他外部站点一样对待它们。

我发现解决这一问题的最简单方法是使用以下方法之一:

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

https://${pageContext.request.serverName}
例如(在JSP中):

你可以
如果你愿意的话。

/${pageContext.request.serverName}
这不使用当前页面的协议吗?OP想要将协议强制为http或https。我明白了,很抱歉混淆了。这是可行的,但我发现我还必须硬编码8443端口(我想这是因为我没有使用默认的生产端口443)
https://${pageContext.request.serverName}<c:url value="/my/path"/>
You can
<a href="https://${pageContext.request.serverName}<c:url value='/reset-password.jsp'/>">reset your password</a>
if you like.