Http协议 详解

1.Http  URL  分析  

  Http   超文本传输协议     是一个基于请求和响应模式的、无状态、应用层协议,基于TCP/IP协议

  Http1.1 版本是对Http1.0的改进,支持长连接。     

   Http URL 格式如下:
        http://host[":"port][path]
        ---http  通过http协议定位网络资源    也可以是FTP 协议
        ----host  合法的Internet主机域名或者IP 
        ----port  指定的服务器端口  默认80   
        ---path  请求资源的URI地址    如果URL没有给出path,浏览器默认会为请求URL 添加上“/”


2. Http 请求分析     
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: BDUSS=dmNjE0Sm9CUHlEUkRDNVl1elVHVXUwaEV6M1lQclZBYndGMENzdzVCWTA5VWxXQVFBQUFBJCQAAAAAAAAAAAEAAAAVQwYpYmFpYnV4aWhhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRoIlY0aCJWNj;
Http请求分为3个部分:请求行、消息报文、请求正文

     GET / HTTP/1.1  ---请求行  格式 Method     Request-URI HTTP-Version

   method ---请求方法   Request-URI  请求资源定位符    HTTP-Version 请求HTTP协议版本;

   method---全部大写,包括如下方法:

   GET  获取Request-URI所标识的资源;

   POST   在 Request-URI所标识的资源附加新数据。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被    发送给服务器,然后服务器将其发送到他要去的地方。

   HEAD  请求获取Request-URI所标识的资源的响应消息报头  

                  HEAD方法与GET方法的行为很类似,但服务器在响应中只返回首部。不会反回实体的主体部分。这就允许             客户端在未获取实际资源的情况下,对资源的首部进行检查。作用:

            在不获取资源的情况下,了解资源的情况

            通过查看响应中的状态码,看看某个对象是否存在

            通过查看首部,测试资源是否被修改

            服务器开发者必须确保返回的首部与GET请求返回的首部完全相同

    PUT     请求服务器存储一个资源,并用Request-URI作为其标识

    DELETE  请求服务器删除Request-URI所标识的资源
    TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
    CONNECT 保留将来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求


消息报文:

Connection: keep-alive  ----客户端发起长连接   keepalive 在很多情况下能够重用连接,减少资源消耗,缩短响应时间。Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接Pragma: no-cache   

Cache-Control: no-cache     ---用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。    

     请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
     响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

---请求报头域用于指定客户端接受哪些类型的信息    

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 

Chrome/44.0.2403.125 Safari/537.36

-------,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。DNT: 1   ----禁止追踪Accept-Encoding: gzip, deflate, sdch ----请求报头域类似于Accept,但是它是用于指定可接受的内容编码。如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。 gzip, deflate 内容压缩 Google最近发明的HTTP压缩算法SDCHAccept-Language: zh-CN,zh;q=0.8

---请求报头域类似于Accept,但是它是用于指定一种自然语言。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。Cookie:

--- 浏览器 保存当前域名的信息

Host: www.baidu.com 

----- 请求报头域主要用于指定被请求资源的Internet主机和端口号

Referer:  https://www.baidu.com/link?

---告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。(可以用于防止盗链)

3. Http 响应  分为3部分  状态行、消息报文、响应内容      
   HTTP/1.1 200 OK    ---状态行
        Date: Tue, 08 Dec 2015 05:13:27 GMT ---- 普通报头域表示消息产生的日期和时间
    Content-Type: text/html; charset=utf-8

   ----指明发送给接收者的实体正文的媒体类

   Transfer-Encoding: chunked 

    -----表示输出的内容长度不能确定    Expires: Tue, 08 Dec 2015 05:13:38 GMT

   ----缓存失效时间    Last-Modified: Tue, 08 Dec 2015 05:13:28 GMT

   ---请求资源服务器最后一次修改时间    X-UA-Compatible: IE=10

   ----指定浏览器 兼容模式

  Content-Length: 23330

    ---请求资源大小

转载于:https://my.oschina.net/u/1028135/blog/540717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值