为什么在将数据写入其输出流后无法修改响应

时间:2014-02-04 07:22:54

标签: servlets cookies httpresponse

我正在努力解决一个问题,因为在我的应用程序中,我希望在数据写入其输出流后对响应进行一些修改。我想在将数据写入其输出流后添加一个cookie并刷新流。当我在firebug中检查响应时,我没有在响应头中找到该cookie。我想知道它为什么会发生?

1 个答案:

答案 0 :(得分:1)

这是由于HTTP如何工作。 HTTP响应由以下三个部分组成:

  1. 响应状态代码:例如200 OK
  2. 标题列表
  3. 回复正文
  4. 设置cookie包括向响应添加标头(Set-Cookie)。因此,如果您已将数据发送到输出流并已刷新,则已经发送了标题,以及某些部分或整个正文。因此添加标题为时已晚,因为标题已经发送。