0

我正在覆盖该HttpServletResponseWrapper.sendRedirect()方法。通常,重定向 url 将以httpor开头https。但是我们确实遇到了一些这样的 URL:

//www.google.com.

当您将此 URL 分配给window.locationjs 时,此 URL 有效。但是,如果我们尝试重定向此 URL,它将失败。因为它将始终将其视为相对路径。

你知道如何正确重定向这样的 URL 吗?

4

3 回答 3

0

您可以依赖以下内容。

http://docs.oracle.com/javaee/1.2.1/api/javax/servlet/ServletRequest.html#getScheme()

这会告诉你它是否是 http/https

于 2013-07-16T06:56:52.353 回答
0

为了处理相对 URL(即不指定架构或主机的 URL),您需要从ServletRequest触发处理的 URL 中复制缺失的部分。Java 类URL有一个辅助方法:

URL requestURL = new URL( request.getRequestURL() );
URL redirectURL = new URL( requestURL, "//www.google.com" );
于 2013-07-16T07:12:35.350 回答
0

参考这个问题,默认情况下,没有协议的链接将使用当前协议。

因此您可以简单地使用当前页面的协议。

于 2013-07-16T07:19:49.010 回答