HTTP协议(三) HTTP请求

来源:互联网 发布:人工智能机器人培训班 编辑:程序博客网 时间:2024/04/30 02:02
HTTP协议(三) HTTP请求  HTTP协议的请求和响应都有一定的规则,这篇网站当中首先着重介绍一下HTTP协议的请求协议的内容。  HTTP协议的请求主要由一下几部分组成:请求行,请求头,请求体(post)     请求行/r/n    请求头1/r/n    请求头1/r/n    ...    /r/n    请求体(Post方式)/r/n  我们分别按块来说明一下消息请求的格式。<-----------------------------------------------华丽的分割线------------------------------------------------------------>   首先来说一下请求行,请求行主要由三部分组成,请求方法,请求路径,请求协议  请求方法:HTTP规范定义了8种可能的请求方法:GET 检索URI中标识资源的一个简单请求HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档POST 服务器接受被写入客户端输出流中的数据的请求PUT 服务器保存请求数据作为指定URI新内容的请求DELETE 服务器删除URI中命名的资源的请求OPTIONS 关于服务器支持的请求方法信息的请求TRACE Web服务器反馈Http请求和其头标的请求CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理当然我们最常用的也就是get和post方法,get方法的请求方式比较简单,所有请求的参数都显示追加在请求的url后面,而且请求长度有限制,post方式的请求参数都追加在请求体当中,消息长度没有限制而且以隐式的方式进行发送,安全性相对较高(这个安全性对于现在的网络技术也没有什么可安全的了,^_^)。   请求路径:请求路径可以是相对或者绝对的方式,绝对路径不去阐述,相对路径是相对于当前TCP连接的主机的路径(HTTP/1.0方式),在HTTP/1.1方式当中相对于的是请求头当中的host域,HTTP/1.1的新特性会在以后的方式当中进行阐述  请求协议:目前常用的支持HTTP/1.0和HTTP/1.1方式,HTTP/1.1和HTTP/1.0之间存在不少差异性,后面的博客当中会专门去讨论两者之间的异同,以及性能差异。 <-----------------------------------------------又是一道华丽的分割线------------------------------------------------------------>   请求头都是以key:value形式进行保存的,里面记录了客户端的一些基本信息,常用的请求头如下所示 Accept:浏览器可接受的MIME类型。 Accept-Charset:浏览器可接受的字符集。 Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 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类型。 如果想了解更详细的请求头信息可以去w3c的官网去查阅 <-----------------------------------------------又见分割线-----------------------------------------------------------   请求体(又叫请求正文)是post请求方式当中的请求参数,以key=value形式进行存储,多个请求参数之间用&连接,如果请求当中有请求提,那么在请求头当中的Content-Length属性中记录的是该请求体的长度。  下面来看一个还算完整的请求消息吧,这样可能会稍微直观一点 POST hysj.jsp HTTP/1.1Host: search.cnipr.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-CN; rv:1.9.1.13) Gecko/20100914 Firefox/3.5.13 ( .NET CLR 3.5.30729)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Keep-Alive: 300Connection: keep-aliveReferer: http://search.cnipr.com/cnipr/zljs/hyjs-biaodan-y.jspContent-Length: 405 username=guest&extension=&issearch=on&searchword=pd%3D%2820100901%29&presearchword=&sortfield=RELEVANCE&sRecordNumber=&searchType=0&searchFrom=0&channelid=14%2C15%2C16&searchChannel=14%2C15%2C16&strdb=14&strdb=15&strdb=16&cizi=2&sortcolumn=RELEVANCE&R1=-&txtA=&txtB=&txtC=&txtD=20100901&txtE=&txtF=&txtG=&txtH=&txtI=&txtJ=&txtK=&txtL=&txtM=&txtN=&txtP=&txtQ=&txtR=&txtSearchWord=&Submit=%BC%EC%A1%A1%CB%F7
原创粉丝点击