在今天下午解決了一個問題之後,我一直在挖掘網絡@工作中,添加到HttpServletResponse中的Cookie沒有正確地反映在響應頭中,因爲我們的Servlet已經獲取了響應的PrintWriter(即response.getWriter() )在我們添加cookie之前。我現在意識到,最佳實踐要求響應頭修改(即設置內容類型,添加/編輯Cookie等)必須在調用getWriter()之前完成,但是我正在尋找的是:爲什麼?爲什麼不能在調用getWriter()之後更新HttpServletResponse頭文件?
我們一直在推測爲什麼檢索PrintWriter實際上凍結了響應頭,但爲什麼Servlet規範強制實施呢?
謝謝保羅!這就說得通了。所以這可能是Tomcat過度關注何時考慮關閉修改的頭文件。我的錯誤是假設我們在調用out.flush()之前寫入響應主體的任何數據本質上是未提交的,但情況可能並非如此。再次感謝! – 2012-03-01 13:55:03
可愛的答案,很好的參考。謝謝保羅。 – 2015-10-09 09:39:44