| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Http协议解析,新鲜出炉的Android面试真题集锦我给你们整理出来了 -> 正文阅读 |
|
[网络协议]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 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 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:21:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |