我正在覆盖该HttpServletResponseWrapper.sendRedirect()
方法。通常,重定向 url 将以http
or开头https
。但是我们确实遇到了一些这样的 URL:
//www.google.com
.
当您将此 URL 分配给window.location
js 时,此 URL 有效。但是,如果我们尝试重定向此 URL,它将失败。因为它将始终将其视为相对路径。
你知道如何正确重定向这样的 URL 吗?
您可以依赖以下内容。
http://docs.oracle.com/javaee/1.2.1/api/javax/servlet/ServletRequest.html#getScheme()
这会告诉你它是否是 http/https
为了处理相对 URL(即不指定架构或主机的 URL),您需要从ServletRequest
触发处理的 URL 中复制缺失的部分。Java 类URL
有一个辅助方法:
URL requestURL = new URL( request.getRequestURL() );
URL redirectURL = new URL( requestURL, "//www.google.com" );
参考这个问题,默认情况下,没有协议的链接将使用当前协议。
因此您可以简单地使用当前页面的协议。