我必须发送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的情况下我可以看到位置标题在响应中可见4次。
需要了解此行为。我需要在301发送正文。这是可能的。
编辑: 将setHeader和setStatus设置为println ...
之后
消息7和11:如果“origReqBody”为空白 消息27,31:如果“origReqBody”不是空白
同样的行为......我期待301而不是302
答案 0 :(得分:2)
PrintWriter
实际写入输出流,这需要它继续并序列化标题和状态代码,因为它们在响应中排在第一位。所以它只是忽略了对setStatus
和setHeader
的后续调用。只需将这些调用移到println
之上,我敢打赌它会按预期工作。