HTTP报头

来源:互联网 发布:tor网络介绍 编辑:程序博客网 时间:2024/06/06 03:42

请求报头由浏览器间接地设定,并跟在初始的GET和POST请求行之后发送,比如:

GET /servlet/Search?keywords=servlet+jsp HTTP/1.1

Accept: image/gif, image/jpg

Connection: Keep-Alive

Cookie: userID=id456578

Host: www.somebookstore.com

Referer: http://www.somebookstore.com/findbooks.html

User-Agent: Mozilla/4.0

对请求报头的访问,使得servlet能够执行许多优化,并提供大量特性

Accept: 指定浏览器或其他客户程序能够处理的MIME类型: request.getHeader("Accept");

Accept-Charset: 使用的字符集,如ISO-8859-1

Accept-Encoding: 客户端能够处理的编码类型,如gzip或compress

Accept-Language: 客户端的首选语言

Authorization: 客户用这个报头来标识自己的身份

Connnection: 标明客户是否能够处理持续性HTTP连接。持续性连接允许客户或者浏览器在单个socket中读取多个文件,从而节省协商几个独立连接所需的开销

Content-Length: 只适用于POST请求,用来给定POST数据的大小,以字节为单位: request.getContentLength

Cookie: 向服务器返回cookie,这些cookie是之前由服务器发送给浏览器的:request.getCookies

Host: 标明原始URL中给出的主机名和端口号

If-Modified-Since: 仅当页面在指定日期之后发生改变的情况下,客户程序才希望获取该页面。如果没有更新的结果,则服务器发送304报头。这个选项十分有用,因为使用它,浏览器可以缓存文档,只在它们发生改变时才通过网络重新载入它们

Referer: 标明引用Web页面的URL

User-Agent:请求的浏览器或者其他客户程序

关于响应报头:

Web服务器对请求的响应,一般由一个状态行,一些响应报头,一个空行和响应的文档组成

HTTP/1.1 200 OK

Content-Type: text/html

Header 2:  ...

Header N: ...

   (Blank Line)

<!DOCTYPE>

<HTML>

<HEAD>...</HEAD>

<BODY>...</BODY>

</HTML>

首先看HTTP状态代码:

200: OK

302: sendRedirect

404: sendError

关于响应报头的其他部分:

Allow: 指定服务器支持的请求方法(GET,POST等)

Cache-Control: 告诉浏览器或者其他客户,什么环境可以安全地缓存文档

Connection: close值,指定浏览器不用使用持续性的HTTP连接

Content-Disposition: 要求浏览器询问客户,将响应存储在磁盘上给定名称的文件中

Content-Encoding: 标明页面在传输过程中所使用的编码方式

Content-Language: 文档使用的语言

Content-Length: 响应中的字节数

Content-Type: MIME

Expires: 规定内容的过期时间,从而不再需要继续缓存: response.setDataHeader("Expires", Time)

Last-Modified: 标明文件最后的修改时间

Location: 300-399之间的所有响应都应该包括这个报头,它通知浏览器文档的地址

Refresh: 标明浏览器应该多长时间之后请求最新的页面: response.setIntHeader("Refresh", 30)

Set-Cookie: 指定一个同页面相关的cookie

有的细节还不是非常的清楚,以后慢慢再了解

还有一点想说一下,也是Core Servlets and JavaServer Pages中的内容,对于执行耗时较长的计算任务的处理方法:

只需启动一个Thread,将该线程的优先级设为一个较低的值,这样才不致于影响整个服务器的运行,当然需要不断使用

If(!isLastResult){

    response.setIntHeader("Refresh", 5)

}

对于具体的运算类,可以这样定义:

Thread t =new Thread(this);

t.setPriority(Thread.MIN_PRIORITY);

t.start();

这样做的好处是:不让用户等待过长的时间

0 0
原创粉丝点击