gpt4 book ai didi

java - 为什么在调用 getWriter() 之后不能更新 HttpServletResponse header ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:54 38 4
gpt4 key购买 nike

在今天下午@work 解决了一个问题后,我一直在网上搜索,其中添加到 HttpServletResponse 的 Cookie 没有正确反射(reflect)在响应 header 中,因为我们的 Servlet 已经检索到响应的 PrintWriter(即 response.getWriter( )) 在我们添加 cookie 之前。我现在知道最佳实践规定必须在调用 getWriter() 之前完成响应 header 修改(即设置内容类型、添加/编辑 Cookie 等),但是,我正在寻找的是:为什么?

我们一直在猜测为什么检索 PrintWriter 实际上会卡住响应 header ,但为什么 Servlet 规范明确强制执行这一点?

最佳答案

Java™ Servlet 规范版本 2.4SRV.5.2 header 部分

要成功传输回客户端,必须先设置 header 响应已提交。提交响应后设置的 header 将是被 servlet 容器忽略。

所以规范没有明确提到 getWriter()对设置标题有影响。

但是,您的 servlet 容器实现可能已选择将响应视为已提交一次 getWriter()叫做。这是微妙的不同。

在我使用过的一些容器中,当您尝试在响应已提交后设置 header 时,会收到一条警告记录。

总是值得打电话getWriter()尽可能晚,因为您可能希望有机会设置字符编码等,这些必须在 getWriter() 之前设置。被称为。

关于java - 为什么在调用 getWriter() 之后不能更新 HttpServletResponse header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508445/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com