您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 深度剖析HTTP协议
—高级软件人才实作培训专家!北京传智播客教育协议讲师:韩顺平hanshunping@tsinghua.org.cn—高级软件人才实作培训专家!什么是HTTP协议主讲韩顺平超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。是工作在tcp/ip协议基础上的,所有的文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过httpwatch插件来抓取http请求内容。http1.0短连接http1.1长连接.http是TCP/IP协议的一个应用层协议,http也是我们web开发的基础.—高级软件人才实作培训专家!一个问题主讲韩顺平看一个test.html页面h1abc/h1imgsrc=news.jpg/imgsrc=news2.jpg/问浏览器发出几次http请求?1次2次3次—高级软件人才实作培训专家!HTTP请求主讲韩顺平举例:GET/test/hello.htmlHTTP/1.1Accept:*/*Referer::zh-cnUser-Agent:Mozilla/4.0Accept-Encoding:gzip,deflateHost:localhost:8080Connection:Keep-Alive客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。如下所示:请求行一个空行多个消息头请求行用于描述客户端的请求方式、请求的资源名称,以及使用的HTTP协议版本号消息头用于描述客户端请求哪台主机,以及客户端的一些环境信息等—高级软件人才实作培训专家!HTTP请求的细节——请求行主讲韩顺平请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT常用的有:POST、GETgetpost区别是程序员常常讨论的问题,总结以下区别.①GET提交,请求的数据会跟在URL之后例如:login.php?name=abc&password=kkkPOST提交:把提交的数据放置在是HTTP包的包体中。比如:POST/test/reg.phpHTTP/1.1Host:Content-Type:Content-Length:name=abc&password=xyz因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变—高级软件人才实作培训专家!HTTP请求的细节——请求行主讲韩顺平②传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。而在实际开发中存在的限制主要有:GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。因此对于GET提交时,传输数据就会受到URL长度的限制。POST:由于不是通过URL传值,理论上数据不受限。③安全性:相对而言post提交,安全高.④get提交更利于添加到我的收藏夹—高级软件人才实作培训专家!HTTP请求的细节——消息头主讲韩顺平用于HTTP请求中的常用头Accept:text/html,image/*Accept-Charset:ISO-8859-1Accept-Encoding:gzip,compressAccept-Language:en-us,zh-cnHost::Tue,11Jul200018:23:51GMTReferer::Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)CookieConnection:close/Keep-AliveDate:Tue,11Jul200318:23:51GMT当服务器需要知道请求是来自哪个ip等信息,就可通过程序获得相应的信息—高级软件人才实作培训专家!HTTP请求的细节——消息头主讲韩顺平HTTP请求课堂小练习请编写一个MyImport.php该php显示你的名字,工作和性别,当一个链接不是来自本网站的,则跳转到错误提示页面“小子,想盗链吗?”—高级软件人才实作培训专家!HTTP响应主讲韩顺平举例:HTTP/1.1200OKServer:Microsoft-IIS/5.0Date:Thu,13Jul200005:46:53GMTContent-Length:2291Content-Type:text/htmlCache-control:privateHTMLBODY……一个HTTP响应代表服务器向客户端回送的数据,它包括:一个状态行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。状态行一个空行多个消息头实体内容状态行用于描述服务器对请求的处理结果。消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。代表服务器向客户端回送的数据—高级软件人才实作培训专家!HTTP响应的细节——状态行主讲韩顺平基本结构格式:HTTP版本号状态码原因叙述CRLF举例:HTTP/1.1200OK状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:状态码含义100~199表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程200~299表示成功接收请求并已完成整个处理过程,常用200300~399为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用302、304400~499客户端的请求有错误,常用404500~599服务器端出现错误,常用500—高级软件人才实作培训专家!HTTP响应细节——常用响应头主讲韩顺平HTTP请求中的常用响应头Location::apachetomcatContent-Encoding:gzipContent-Length:80Content-Language:zh-cnContent-Type:text/html;charset=GB2312Last-Modified:Tue,11Jul200018:23:51GMTRefresh:1;url==aaa.zipTransfer-Encoding:chunkedSet-Cookie:SS=Q0=5Lb_nQ;path=/searchExpires:-1Cache-Control:no-cachePragma:no-cacheConnection:close/Keep-AliveDate:Tue,11Jul200018:23:51GMT如何防止浏览器缓存页面.重点讲解:Location,Content-Type,Refresh,Content-Disposition,Expires,Cache-control,Pragma—高级软件人才实作培训专家!作业主讲韩顺平1.描述清楚HTTP请求头、响应头的格式2.请求头和响应头中各个头字段的含义3.请描述200、302、304、404和500等响应状态码所表示的意义。4.请列举三种禁止浏览器缓存的头字段,并写出相应的5.如果浏览器传递给WEB服务器的参数内容超过1K,应该使用那种方式发送请求消息?6.如何获取http协议的其他消息头信息(google一下吧!)
本文标题:深度剖析HTTP协议
链接地址:https://www.777doc.com/doc-2285557 .html