Java 中的 URL 重定向返回 302 而不是 301

Posted

技术标签:

【中文标题】Java 中的 URL 重定向返回 302 而不是 301【英文标题】:URL redirection in Java return 302 instead of 301 【发布时间】:2012-02-04 02:43:19 【问题描述】:

我正在使用此代码重定向网址:

  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
  response.sendRedirect(newURL);

我可以看到一个正确的重定向,但响应中返回的值是 302 而不是 301。我怎样才能将其强制为 301?

【问题讨论】:

【参考方案1】:

如果您使用sendRedirect,它会将状态重置为 302。您必须使用 setHeader 自己设置 Location 标头才能使用 301 状态进行重定向。

示例代码:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", "http://somewhere/");

从这个答案中得出: HttpServletResponse sendRedirect permanent

【讨论】:

我添加了这个:response.setHeader("Location", newUrl); response.setHeader("连接", "关闭");但它不起作用 发现了问题:) 现在可以了,我忘了删除 response.sendRedirect(newURL);对不起,伙计们! 嗯,实际上 sendRedirect 接受相对 URL 并将它们解析为绝对 URL。明确设置位置 - 正如您在此处建议的那样 - 没有任何解决逻辑。任何建议的尽可能简单的方法来正确地从相对路径到绝对路径解决它?

以上是关于Java 中的 URL 重定向返回 302 而不是 301的主要内容,如果未能解决你的问题,请参考以下文章

JMeter POST 请求返回 200 OK 而不是 302(重定向)

Apache:将IP';s(而不是X)重定向到[URL]

Java 获取网络重定向URL(302重定向)

为啥 rev 规范链接总是使用 302 重定向

如何用 PHP 实现 302 重定向到其他 URL

如何使用 301 重定向而不是 302 将 HTTP 站点重定向到 HTTPS 站点