Wil*_*son 8 java tomcat web-applications java-ee
在今天下午解决问题后,我一直在网上挖掘工作,其中添加到HttpServletResponse的Cookie没有在响应头中正确反映,因为我们的Servlet已经检索到响应的PrintWriter(即response.getWriter())之前我们添加了cookie.我现在知道最佳实践要求响应头修改(即设置内容类型,添加/编辑Cookie等)必须在调用getWriter()之前完成,但是,我正在寻找的是:为什么?
我们一直在猜测为什么检索PrintWriter实际上冻结了响应头,但为什么Servlet规范明确强制执行呢?
Pau*_*ime 13
第SRV.5.2头的中的Java™Servlet规范2.4版
要成功传输回客户端,必须在提交响应之前设置标头.servlet容器将忽略响应提交后设置的标头.
因此规范没有明确提到getWriter()对设置标头有影响.
但是,您的servlet容器实现可能已选择将响应视为已调用一次getWriter().这略有不同.
在我与之合作的一些容器中,当您尝试在响应响应后设置标题时,会收到警告.
它总是值得getWriter()尽可能晚地调用,因为您可能希望有机会设置字符编码等,这必须在getWriter()调用之前设置.
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |