HTTP请求的那些事

1.http协议:
http介绍
http请求报头
http请求头部字段
http响应头部字段
代理
Fiddeler工具
2.HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
3.作用:从万维网上传输超文本文件到本地浏览器
www:万维网
w3c:万维网联盟
HTML:超文本标记语言
Web:网页 website:网站
Css:层叠样式表
JavaScript(编程语言)脚本:js脚本《script》
4.http请求头部:
HTTP请求的那些事
HTTP请求的那些事

5.http请求方法:
HTTP请求的那些事

6.GET和POST的区别:
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
HTTP请求的那些事

7.URI
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息
URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:
格式:协议://域名(或ip):端口号/路径(文件所在的位置)+?参数=值&参数=值
协议:http https
http的版本:
http0.9 http1.0 http1.1 http2.0
8.请求字段:
①Accept:指客户端能够接受的文件类型
例:Accept:text/html 表示能接受此类型文件
Accept:/ 表示能接受所有类型文件
②Accept-Encoding:指客户端能够接受的文件压缩方式
例:Accept-Encoding:gzip,deflate
③Accept-language:指客户端能够接受的自然语言
例:zh-CN指中文 en-US美式英语 zh-TW指* zh-HK指香港
④Accept-Charset:指客户端能够接受的字符集编码方式
例:Accept-Charset:utf-8,gb2312
⑤Host:指客户端访问的服务器地址(IP或域名)和端口。(不显示则为默认的)
⑥User-Agent:指客户端使用的主机OS的版本和浏览器信息版本信息
⑦Referer:指客户端访问的资源url来源于哪里,即来源于那个网页
作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
⑧Connection:指客户端支持的连接类型
包括:长连接keep-alive,长连接是一条连接成功后可以传很多数据,即客户端和服务端建立一次连接之后,可以在这条连接上进行多次请求/响应操作.
短连接:keep-close,不支持长连接,客户端和服务端进行一次HTTP请求/响应之后,就关闭连接。
⑨Cache-Control:缓存控制,指发送的资源是否允许被缓存

例:Cache-Control:no-cache不允许资源缓存
Cache-Control:max-age=120允许缓存120秒
⑩Cookie:指cookie值,会产生一个session ID
作用:解决http无状态连接。
session是存放在服务器端点的数据结构,用来跟踪用户状态。
cookies是客户端保存用户信息的一种机制。
content-length:发送的请求实体中数据的长度
If-Modified-Since
作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304(请求数据未被修改),客户端就直接使用本地缓存文件。如果时间不一致,就会返回200(响应成功)和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中.
If-None-Match
作用: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能
例如: If-None-Match: “03f2b33c0bfcc1:0”
If-None-Match
作用: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能
例如: If-None-Match: “03f2b33c0bfcc1:0”
range
作用:断点续传。bytes=某个值(下次从这个值开始进行传输)
当用户在听一首歌的时候,如果听到一半(网络下载了一半),网络断掉了,用户需要继续听的时候,文件服务器不支持断点的话,则用户需要重新下载这个文件。而Range支持的话,客户端应该记录了之前已经读取的文件范围,网络恢复之后,则向服务器发送读取剩余Range的请求,服务端只需要发送客户端请求的那部分内容,而不用整个文件发送回客户端,以此节省网络带宽。
http响应报头:
HTTP请求的那些事
状态码:
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别
1XX :信息类,提示信息 - 表示请求已被成功接收,继续处理
2XX :响应成功类 - 表示请求已被成功接收,理解,接受
200:成功处理需求
3XX :重定向类 - 要完成请求必须进行更进一步的处理
301:永久重定向 302:临时重定向 304:资源未被修改
4XX :客户端错误类 - 请求有语法错误或请求无法实现
403:拒绝服务 404:资源未被发现
5XX :服务器端错误类 - 服务器未能实现合法的请求
503:服务器不能正常处理请求
响应头部域:
1.Date:表示响应报文的时间
2.Content-type:服务器告诉客户端响应实体的类型和字符集编码
3.Content-encoding:服务器告诉客户端响应实体内容的压缩方式
4.Content-language:实体内容的自然语言
5.Content-length:响应实体的大小
6.Server:服务器告诉客户端服务器软件的信息
7.Connection: 连接类型
8.Cache-control:缓存控制,设置是否允许客户端缓存文件
9.Expires: 浏览器会在指定过期时间内使用本地缓存
10.Set-Cookie:用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.
例如: Set-Cookie: sc=4c31523a; path=/; domain=.acookie.taobao.com
11.ETag:资源标识符,用于标识出资源的状态。当资源发生变更时,如果其头信息中一个或者多个发生变化,或者消息实体发生变化,那么ETag也随之发生变化。和If-None-Match 配合使用。
12.Last-Modified:指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)
例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT
13.Location:重定向URL地址,用于重定向一个新的位置, 包含新的URL地址