Http协议解析,新鲜出炉的Android面试真题集锦我给你们整理出来了

但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。

User-Agent头域

User-Agent头域的内容包含发出请求的用户信息。

**3、响应消息

**响应消息的第一行为下面的格式:

**HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP-Version表示支持的HTTP版本** ,例如为HTTP/1.1。

Status-Code是一个三个数字的结果代码 。

Reason-Phrase给Status-Code提供一个简单的文本描述 。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。 Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用 。第一个数字可能取5个不同的值:

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

5xx:服务端错误,服务器不能正确执行一个正确的请求

响 应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。 对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。

典型的响应消息:

HTTP/1.0200OK

Date:Mon,31Dec200104:25:57GMT

Server:Apache/1.3.14(Unix)

Content-type:text/html

Last-modified:Tue,17Apr200106:46:28GMT

Etag:“a030f020ac7c01:1e9f”

Content-length:39725426

Content-range:bytes554554-40279979/40279980

上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。

Location响应头

Location响应头用于重定向接收者到一个新URI地址。

Server响应头

Server响应头包含处理请求的原始服务器的软件信息 。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

4、实体信息

请求消息和响应消息都可以包含实体信息, 实体信息一般由实体头域和实体组成。  实 体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header 。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。 实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。

Content-Type实体头

Content-Type 实体头用于向接收方指示实体的介质类型 ,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头

Content-Range实体头

用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度 。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:

Content-Range:bytes-unit SP first-byte-pos - last-byte-pos/entity-legth

例 如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响 应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。

Last-modified实体头

Last-modified实体头指定服务器上保存内容的最后修订时间。

5、 HTTP 头参考(microsoft)

HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。

许 多请求头字段都允许客户端在值部分指定多个可接受的选项,有时甚至可以对这些选项的首选项进行排名。多个项以逗号分隔。例如,客户端可以发送包含 “Content-Encoding: gzip, compress,”的请求头,表示可以接受各种压缩类型。如果服务器的响应正文使用 gzip 编码,其响应头中将包含“Content-Encoding: gzip”。

有些字段可以在单个头中出现多次。例如,头可以有多个“Warning”字段。

下 表列出了 HTTP 1.1 头字段。注意:有些头字段是 MIME 字段。MIME 字段在 Internet Engineering Task Force (IETF) 文档 RFC 2045 中进行了定义,但也可用于 HTTP 1.1 协议。有关 MIME 和 HTTP 1.1 规范的详细信息,请参阅 IEIF 页。

一般头字段

一般头字段可用于请求消息和响应消息。

**名称          示例值

Cache-Control**   “max-age=10”

Connection     “close”

Date           “Tue, 11 Jul 2000 18:23:51 GMT”

Pragma         “no-cache”

Trailer          “Date”

Transfer-Encoding “chunked”

Upgrade        “SHTTP/1.3”

Via             “HTTP/1.1 Proxy1, HTTP/1.1 Proxy2”

Warning        “112 Disconnected Operation”

请求头字段

请求头字段仅用于请求消息。

**名称             示例值

Accept**            “text/html, image/*”

Accept-Charset    “iso8859-5”

Accept-Encoding  “gzip, compress”

Accept-Language  “en, fr”

Authorization      [credentials]

Content-Encoding  “gzip”

Expect            “100-continue”

From             " user@microsoft.com "

Host             " www.microsoft.com "

If-Match          “entity_tag001”

If-Modified-Since “Tue, 11 Jul 2000 18:23:51 GMT”

If-None-Match     “entity_tag001”

If-Range          “entity_tag001” or “Tue, 11 Jul 2000 18:23:51 GMT”

If-Unmodified-Since “Tue, 11 Jul 2000 18:23:51 GMT”

Max-Forwards     “3”

Proxy-Authorization [credentials]

Range        “bytes=100-599”

Referer       " http://www.microsoft.com/resources.asp "

TE           “trailers”

User-Agent    “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)”

**>>请求头字段的具体含义

Accept:** 浏览器可接受的MIME类型。

Accept-Charset: 浏览器可接受的字符集。

Accept-Encoding: 浏览器能够进行解码的数据编码方式,比如gzip。

Accept-Language: 浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Authorization :授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。

Connection: 表 示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。

Content-Length :表示请求消息正文的长度。

Cookie :设置cookie,这是最重要的请求头信息之一

From: 请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。

Host: 初始URL中的主机和端口。

If-Modified-Since :只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。

Pragma: 指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

Referer: 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

User-Agent: 浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

UA-Pixels,UA-Color,UA-OS,UA-CPU: 由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

响应头字段

响应头字段仅用于响应消息。

**名称          示例值

Accept-Ranges**   “none”

Age             “2147483648(2^31)”

ETag            “b38b9-17dd-367c5dcd”

Last-Modified     “Tue, 11 Jul 2000 18:23:51 GMT”

Location         " http://localhost/redirecttarget.asp "

Proxy-Authenticate [challenge]

Retry-After       “Tue, 11 Jul 2000 18:23:51 GMT” or “60”

Server          “Microsoft-IIS/5
.0”

Vary             “Date”

WWW-Authenticate [challenge]

实体头字段

实体头字段可以用于请求消息或响应消息。实体头字段中包含消息实体正文的有关信息,如使用的编码格式。

名称            示例值

Allow               “GET, HEAD”

Content-Encoding    “gzip”

Content-Language   “en”

Content-Length      “8445”

Content-Location    " http://localhost/page.asp "

Content-MD5        [md5-digest]

Content-Range      “bytes 2543-4532/7898”

Content-Type       “text/html”

Expires            “Tue, 11 Jul 2000 18:23:51 GMT”

Last-Modified       “Tue, 11 Jul 2000 18:23:51 GMT”

**>>实体头字段的具体含义

Allow** 服务器支持哪些请求方法(如GET、POST等)。

Content-Encoding 文 档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的 下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。

Content-Length 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。

Date 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。

Expires 应该在什么时候认为文档已经过期,从而不再缓存它?

Last-Modified 文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。

Location 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。

Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader(“Refresh”, “5; URL=http://host/path”)让浏览器读取指定的页面。

注 意这种功能通常是通过设置HTML页面HEAD区的<META. HTTP-EQUIV=“Refresh” C>实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是,对于Servlet来说,直接设置 Refresh头更加方便。

注意Refresh的意义是“N秒之后刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面 ”。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META. HTTP-EQUIV=“Refresh” …>。

注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

请求头示例

以下是 HTTP 请求的简单示例。

GET /articles/news/today.asp HTTP/1.1

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Accept-Encoding: gzip, deflate

GET /articles/news/today.asp HTTP/1.1

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Accept-Encoding: gzip, deflate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值