HTTP协议分析

1.URL详解

  URL(Uniform Resource Locator)地址用于描述一个网络上的资源,基本格式如下

schema://host[:port#]/path/..../[?query-string][#anchor]

  scheme    指定底层使用的协议(例如:http,https,ftp)
  host         HTTP服务器的IP地址或者域名

  port#       HTTP服务的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如http://www.cnblogs.com:8080

  path         访问资源的路径

  query-string  发送给http服务器的数据

  anchor         锚

例子:

http://www.mywebsite.com/sj/test/test.aspx?name=sivergn&x=true#stuff
schema:             http
host:               www.mywebsite.com
path:               /sj/test/test.aspx
Query String:       name=sviergn&x=true
Anchor:             stuff

2.HTTP协议是无状态的

http协议是无状态的,同一个客户端的这次请求和上次请求时没有对应关系的,对HTTP服务来说,他并不知道这两个请求来自同一个客户端。为了解决这个问题,web程序引入了Cookie机制来维护状态。

3.HTTP消息结构

 

  解释:

第一行中的Method表示请求方法,比如“POST”、“GET”,path-to-resource表示请求的资源,http/version-number表示HTTP协议的版本号

当使用的是“GET”方法的时候,body是为空的



3、Get和Post方法的区别

HTTP协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE,一个URL地址用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查、改、增、删4个操作。我们最常见的就是GET和POST了。GET一般用户获取/查询资源信息,而POST一般用于更新资源信息。

我们看看GET和PSOST的区别

1、GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=12345,POST方法是把提交的数据放在HTTP包的Body中。

2、GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而Post方法提交的数据没有限制

3、GET方式需要使用Request.QueryString来取得变量的值,而Post方式通过Request.Form来获取变量的值。

4、GET方式提交数据,会带来安全问题,比如登录一个页面,通过Get方式提交数据时,用户名和密码出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

4、状态码

Resonse消息中俄第一行叫做状态行,由HTTP协议本号,状态码,状态消息 三部分组成。

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response。

HTTP/1.1中定义了5类状态码,状态码由三位数字组成,第一个数字定义了相应的类别

1xx 提示信息-表示请求已被成功接收,继续处理

2xx 成功-表示请求已被成功接收,理解,接受

3xx 重定向-要完成请求必须进行更进一步的处理

4xx 客户端错误-请求有语法错误或请求无法实现

5xx 服务器端错误-服务器未能实现合法的请求

302:表示服务器地址已经改变,随后的location:url 表示新的地址

5、HTTP Request header请求头详解


if-Modified-Since属性解释:

作用:把浏览器端混村页面最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一直,那么就返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

例如:if-Modified-Since:Thu,09 Fed 2012 09:07:57 GMT


If-None-Match

作用:If-None-Match和Etag一起工作,工作原理是在HTTP Reponse中添加ETag信息。当用户再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和ETag.使用这样的机制将提高网站的性能

例如:If-None-Math:"03f2b33c0bfcc1:0"


Cache-Control

作用:这个是非常重要的规则。这个用了指定Request-Request遵循的缓存机制。各个指令含义如下

cache-Control:public  可以被任何缓存所缓存()

cache-Control:private  内容只和缓存到私有缓存中

cache-Control:no-cache 所有内容都不会被缓存

6、Http Response header

Date

作用:生成消息的具体时间和日期

例如:Date:Sat,11 Feb 2012 11:35:14 GMT

 Expires

作用:浏览器会在指定过期内使用本地缓存

例如:Expires:tue,08 Feb 2022 11:35:14 GMT

Vary

作用:

例如:Vary:Accept-Encoding

7、Cooke/login头域

Set-Cookie

作用:非常重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会生成一个Set-Cookie.

例如:Set-Cookie:sc=4c31223a;path=/;domain=.acookie.taobao.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值