机身在301 http响应

时间:2013-05-30 07:30:39

标签: java http servlets

我必须发送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 ...

之后

enter image description here

消息7和11:如果“origReqBody”为空白 消息27,31:如果“origReqBody”不是空白

同样的行为......我期待301而不是302

1 个答案:

答案 0 :(得分:2)

如果有内容,

PrintWriter实际写入输出流,这需要它继续并序列化标题和状态代码,因为它们在响应中排在第一位。所以它只是忽略了对setStatussetHeader的后续调用。只需将这些调用移到println之上,我敢打赌它会按预期工作。