【发布时间】:2013-05-25 16:30:33
【问题描述】:
我必须发送 301 响应代码。下面是我正在使用的代码:
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println(origReqBody);
resp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
resp.setHeader("Location", homeSiteRedirUrl);
在这里我观察到,如果“origReqBody”为空白,则它正在发送 301,如果“origReqBody”有一些字符串,则代码正在发送 302。如果是 302,我可以看到 Location Header 在响应中可见4 次。
需要了解这种行为。我需要在 301 中发送尸体。可以吗?
编辑: 在 println 上面制作 setHeader 和 setStatus 后...
消息 7 和 11:如果“origReqBody”为空 消息 27、31:如果“origReqBody”不为空
同样的行为...我期待的是 301 而不是 302
【问题讨论】:
-
很奇怪。我无法重现它。如果我放置位置标题(代码的最后一行),就好像我从未向
out打印任何内容。如果我不放置位置,那么它会打印出来。无论哪种方式,我的 servlet 都会返回一个301。 -
您使用的是什么版本的 servlet?什么是容器?在方法的开头和结尾各放一个
System.out.println("status: "+response.getStatus());,它们打印什么? -
使用 servlet 2.5 且 getStatus 不可用。我使用的容器(即 apache)嵌入在某些专有软件中。