• 1. 1转正答辩李俊 2014.07.10
  • 2. 1.基础回顾2.HTTP请求(响应)行3.HTTP请求(响应)头域目录4.HTTP代理服务器
  • 3. What?什么是HTTP协议 When?HTTP协议版本 Where?HTTP协议在协议层的位置 How?HTTP协议的工作流程1,基础回顾
  • 4. (本页无文本内容)
  • 5. 2,HTTP请求(响应)行HTTP请求 --- 方法GET请求获取由Request-URI所表示的资源 POST在Request-URI所标识的资源后附加新的数据HEAD请求获取由Request-URI所标识的资源的响应消息报头PUT请求服务器存储一个资源,并用Request-URI作为其标识DELETE请求服务器删除由Request-URI所标识的资源TRACE请求服务器回送收到的请求信息,主要用于测试或诊断
  • 6. 2,HTTP请求(响应)行HTTP请求 --- 方法GET 通常用来向服务器请求获取数据。也可以可以通过 HTML FORM 元素来向服务器提交一些小数据,需要传输给服务器的数据附在URL 尾部。例如: http://demo.com/index.php?user=test&name=ucweb 限制:能够提交数据受到 URL 长度的限制。 POST 和GET 不同,POST通过将数据提交给服务器,而且数据是被包含在请求体之中。通常POST 方法用来向服务器上传文件。 由于POST是通过请求体来提交数据的,理论上来讲可以提交任意大小的数据(文件)。 HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回;这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  • 7. 2,HTTP请求(响应)行1xx 指示信息——表示请求已接收,继续处理 2xx成功——表示请求已经被成功接收、理解、接受 3xx重定向——要完成请求必须进行更进一步的操作 4xx客户端错误——请求有语法错误或请求无法实现 5xx服务器端错误——服务器未能实现合法的请求 6xx?HTTP请求 --- 响应码讨论:响应码能够自定义吗? 关于HTTP 协议扩展讨论 。(OMA download,9xx)
  • 8. 2,HTTP请求(响应)行HTTP请求 --- 常见响应码状态码描述客户端请求成功 200OK客户端请求成功206Partial content返回请求实体的部分内容301Moved Permanently目标永久移动302found找到目标(目标临时被移动)304Not Modified目标没有修改 400Bad Request客户端请求有语法错误,不能被服务器所理解 403Forbidden 服务器收到请求,但是拒绝提供服务 404Not Found 请求资源不存在 411Length Required服务器拒绝接受没有定义Content-Length的请求413Request Entity Too Large请求实体太大500Internal Server Error 服务器发生不可预测的错误502Bad Gateway网关错误,有可能是网络不通或负载过大导致。504Gateway Timeout连接超时
  • 9. 关于响应码发生的故事 故事名称: 状态码、原因短语 故事关键字: 302 ,FOUND,JAVA底层。 HTTP/1.1 302 Server: nginx/0.7.62 …… Location: xxxx …… 错误的响应头字段 (笔误了。。。?) 注意红色部分,这个响应头是不符合规范的。按照HTTP协议的规范,返回响应的首行Status-Line应该包括Status-Code及Reason-Phrase。 这个例子告诉我们 ,测试人员需要更加了解细节和注意细节。 扩展:apache服务器是否会出现这种错误?2,HTTP请求(响应)行
  • 10. 常见HTTP请求头域Accept (标识浏览器能够接受的实体类型) Accept-Charset /Accept-Language (字符集和语言) Accept-Encoding (接受编码格式 gzip 或者 deflat) Cache-Control ( 缓存策略。例如:Cache-Control: no-cache ) Pragma ( 标注。 例如:Pragma: no-cache ) Connection ( 连接参数。例如:Connection: close ) Date (日期。 例如:Date:Mon,31 Dec 2001 04:25:57 GMT) Content-Type (标识实体类型。) Transfer-Encoding (传输编码。Chunk ) Content-Length (实体长度) Cookie User-Agent (浏览器标识) Host (目标主机) Range (请求实体的部分数据。例如:Range: bytes=0-307199) Referer (引用,通常是上一个访问的URL)3,HTTP请求(响应)头域
  • 11. 常见HTTP响应头域Cache-Control ( 缓存策略。例如:Cache-Control: no-cache ) Pragma ( 标注。 例如:Pragma: no-cache ) Connection ( 连接参数。例如:Connection: close ) Date (日期。 例如:Date: Mon,31 Dec 2001 04:25:57 GMT) Content-Type (标识实体类型。) Transfer-Encoding (传输编码。Chunk ) Content-Length (实体长度) Set-Cookie Expires (缓存过期时间。例如:Expires: Mon,31 Dec 2001 04:25:57 GMT) Location (重定向。域值由单个绝对URI组成。) Content-Range (响应返回实体的部分数据。例如: Content-Range: bytes 0-307199/23272676 ) Content-Disposition (缺省文件名。例如: Content-Disposition: attachment; filename=maxdos.zip) Server (服务器信息)3,HTTP请求(响应)头域
  • 12. 基础名词解释实体 在HTTP协议中,通常指body数据,即HTTP数据体 实体类型 在HTTP协议中,用来标明body数据的格式,说明是页面?还是图片?还是mp3 实体类型,通常对应着后缀名,在Server端可通过mime.types来配置管理3,HTTP请求(响应)头域
  • 13. Accept标识浏览器能够接受的实体类型 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 思考下: 1,这段accept想要说明什么? 2,这段accept中出现了好几个特殊符号,“:”“/”“,”“;”“*”分别起什么作用? 3,“q”是嘛东东? 在实际应用中,accept能起到什么作用呢? 试试使用Modify Headers来自定义accept吧。 http://cn.engadget.com/ http://www.yahoo.com/ 3,HTTP请求(响应)头域
  • 14. 关于Accept发生的故事 右边的Accept字段是有问题的 Accept: application/xml,application/vnd.wap.xhtml+xml,application/xhtml+xml;text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5,UC/145 你看出来了吗? 对于协议规范的定义,测试人员应该更加去了解细节、注意细节2,HTTP请求(响应)行
  • 15. Cache-Control指定缓存策略 Cache-Control: max-age=3600 Cache-Control: no-cache 思考下: 1,这两段Cache-Control各自想要说明了什么? 2,Cache-Control通常是出现在响应里面,但是它偶尔还是会出现在请求中的,什么情况呢? 3,在HTTP头域中,有另外一个头域“Pragma”,两者的区别与联系。 4,在响应头中,有另外一个头域“Expires”,两者的区别与联系。 你知道在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别吗? Have a try!3,HTTP请求(响应)头域
  • 16. 关于Cache-Control发生的故事故事场景:使用黑莓8700的自带浏览器,登录wap.uc.cn,在某个下载跳转页面会出现失败 自带浏览器有bug ? 不支持302跳转?(是软件就会有bug,大胆的怀疑一切?) 神秘的Cache-Control 头字段? “罪魁祸首” : Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 当进行302跳转时,如果页面的Cache-Control字段包含标红的域值时,自带浏览器就会出错。 这两个值的作用呢?( IE5.0的“懒惰”更新开关,PHP中的默认设置)3,HTTP请求(响应)头域
  • 17. User-Agent浏览器标识,用户代理 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 思考下: 1,从这段User-Agent,我们可以得到什么信息? 2,User-Agent在网络访问中又有什么用呢? 3,我们都知道移动网关会把User-Agent给过滤掉,你知道原因吗? 看看User-Agent对于软件适配的作用吧 http://wap.waptw.com 3,HTTP请求(响应)头域
  • 18. 请求/返回实体的部分数据 Range: bytes=0-307199 Content-Range: bytes 0-307199/23272676 Range是请求,Content-Range是响应 思考下: 1,作用? 2,对于Range的请求,如果服务器可以正常响应Content-Range,应该给什么响应码? 3,在下载文件这个部分上,移动限制了什么,网关对大文件处理方式 Range/Content-Range3,HTTP请求(响应)头域
  • 19. 3,HTTP请求(响应)头域截包对比一下断点及不支持断点的情况吧 http://uctest.ucweb.com:9350/download/1.xhtml 不支持断点续传,一般有几种情况: 1: 不允许断点续传的情况,通常会响应403 2: 没有处理Range字段,通常会响应200 3: Chunked编码传输的情况 那么,Chunked编码到底是什么?
  • 20. 声明所使用的传输编码 Transfer-Encoding: chunked 思考下: 1,与Content-Encoding的区别? 2,与Content-Length的关系? Chunked编码主要是对body数据进行封装传输,那么他是如何去封装的呢? telnet观察下google的数据传输过程! m.google.cnTransfer-Encoding3,HTTP请求(响应)头域
  • 21. (本页无文本内容)
  • 22. JUST DO IT!1,telnet进行普通上传; 2,telnet进行chunked编码上传; 3,使用chunked编码向nginx服务器上传;3,HTTP请求(响应)头域POST /html.php HTTP/1.1 Host: uctest.ucweb.com:9350 Content-Type: application/x-www-form-urlencoded Content-Length: 11 Transfer-Encoding: chunked
  • 23. 重定向 Location: http://wap.uc.cn/ 域值是由单个绝对URI构成 Location看似很简单,但是如果不重视的话,却会有一堆堆血淋淋的问题!!!Location3,HTTP请求(响应)头域
  • 24. 故事名称: 302跳转出现404之谜 (1) 故事关键字:Location、移动网关 服务器返回的Location字段是相对URI!!!不规范 移动网关组合出了错误的地址。场景: 客户端访问http://wap.uc.cn/a/302.php页面,页面的PHP脚本为: 讨论:这样写的想法?移动网关处理后的地址是怎么样的?正确的写法: 3,HTTP请求(响应)头域
  • 25. 故事名称: 302跳转出现404之谜 (2) 故事关键字:Location、移动网关 移动网关帮我们进行了302跳转。好处?坏处?场景: 客户端访问http://wap.uc.cn/a/302.php页面,页面要求我们跳转到如下地址: Location: http://wap.uc.cn/b/b.xhtml 跳转后的路径同原访问路径并不一样。 移动网关帮我们处理了302跳转,但是没有告诉客户端跳转后的URI。 实际上客户端获取到的应答是200。而此时如果b.xhtml页面下的链接用相对地址的方式写的话,客户端再进行访问就会出现404错误了。 思考:为什么?3,HTTP请求(响应)头域
  • 26. 缺省文件名 Content-Disposition: attachment; filename=maxdos.zip 思考下: 1,下载的时候,文件名通常是怎么获取到的? 2,为什么有些文件,比如说flash文件,有时候是下载,有时候又变成在网页上打开呢? attachment定义说明是附件,要求进行下载,相对应的值为inline(在线打开) filename定义真实文件名 实际操作看下吧 http://uctest.ucweb.com:9350/download/1.xhtml Content-Disposition3,HTTP请求(响应)头域
  • 27. 什么是HTTP代理服务器代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息 ;HTTP 代理服务器就是支持 HTTP 协议的代理服务器。移动网关就是一个 HTTP代理服务器4,HTTP代理服务器
  • 28. 思考下: 从流程上看,HTTP标准请求同代理请求有什么区别呢? 比如,我们要访问http://wap.uc.cn/,不通过代理,跟通过移动网关代理,有哪些方面的区别呢? 1,三次握手的对象? 2,GET请求提交的地址? 3,Host头域? 4,User-Agent? 5,……?4,HTTP代理服务器
  • 29. 网关一般会自定义一些头域信息,通常以“X-”开头,这些都是非标准的。 x-forwarded-for: 客户端连接至服务器的源IP地址,在移动网络下,通常是内网IP x-up-calling-line-id: 终端用户手机号码 x-up-bear-type: 用户接入承载方式 …… 还有一堆不同品牌的网关自定义的参数,如: x-nokia-….. x-huawei-…. 4,HTTP代理服务器
  • 30. 1,找到RFC2616,并将该文档中,HOST头域的定义及格式找出来。 2,使用telnet创建一个标准HTTP请求,获取到相应的响应后,截图说明。 3,想办法通过firefox获得一个404的响应,并抓包进行说明。 作业请在下周三下班前提交,发送给我,抄送给蔡华及各自Leader。作业
  • 31. 31Thank You!uc.cn