response 被提交

无论你的服务器使用了何种平台( Apache HTTPD Server Java Servlet/JSP Microsoft IIS ,……),只要你通过浏览器来访问,必须返回类似下面的 HTTP 响应:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=AywiPrQKPEzfF9OZ; Path=/
Content-Type: text/html;charset=GBK
Content-Language: zh-CN
Content-Length: 48
Date: Mon, 06 Nov 2006 07:59:38 GMT
<html>
<body>
……

 

我们注意到, HTTP 响应分为 Header Content 两部分。从“ HTTP/1.1 200 OK ”开始,到“ <html> ”之前,都是 HTTP Header ,后面则为 HTTP Content 。而 cookie 是在 header 中指定的。一但应用服务器开始向浏览器输出 content ,那就再也没有机会修改 header 了。问题就出在这里。作为 session cookie 可以在应用程序的任何时间被修改,甚至可能在 content 开始输出之后被修改。但是此后修改的 session 将不能被保存到 cookie 中。

Java Servlet API 的术语称“应用服务器开始输出 content ”为“ response 被提交”。你可以通过 response.isCommitted() 方法来判断这一点。那么,哪些操作会导致 response 被提交呢?

1.         response.getWriter() getOutputStream() 所返回的流中输出,累计达到服务器所设定的一个 chunk 的大小,通常为 8K

2.         用户程序或系统调用 response.flushBuffer()

3.         用户程序或系统调用 response.sendError() 转到错误页面。

4.         用户程序或系统调用 response.sendRedirect() 重定向。

 

 

原文地址:http://opentech.alibaba-inc.com/web/guest/kb

 

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值