1. 简介
http:超文本传输协议,是基于请求与响应模式的、无状态的(没有记忆的)、应用层的协议
位于Tcp/Ip协议的底层
2. url 组成部分详解
2.1 http/https两种协议类型
2.2 host:主机地址或域名
--地址+端口号,如192.168.x.xx:8080
--域名,如www.xxx.com
--本机地址,如localhost:8080
2.3 port:端口号(默认8080可省略)
2.4 path:请求的路径(host之后,?之前)
2.5 ?:分隔符
2.6 参数:name=value
2.7 &:多个参数的连接符
2.8 中文会被编码,以URL编码格式(%+字母)展示
3. request 部分
request的组成.png 图片.png3.1 请求行 request line
3.2 请求头 headers
图片.png3.2.1 Cache 头域
图片.pngIf-None-Match
作用:If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能
If-Modified-Since
作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中
Pragma
防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样
Pargma只有一个用法, 例如: Pragma: no-cache
注意: 在HTTP/1.0版本中,只实现了Pragema:no-cache, 没有实现Cache-Control
3.2.2 Client 头域
Accept:浏览器可接受的媒体类型
如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable);
Accept: / 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个);
Accept-Encoding:编码格式
浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);
大部分的现代浏览器都支持gzip压缩,并会把这一信息报告给服务器。这时服务器就会压缩过的HTML发送给浏览器。这可以减少近80%的文件大小,以节省下载时间和带宽
Accept-Language:语言
浏览器申明自己接收的语言。如果网站有不同的语言版本,那么就可以通过这个信息来重定向用户的浏览器。
语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;
User-Agent:客户端类型
告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本
它是某些网站用来收集访客信息的一般手段。例如,你可以判断访客是否在使用手机访问你的网站,然后决定是否将他们引导至一个在低分辨率下表现良好的移动网站。
Accept-Charset
浏览器申明自己接收的字符集
3.2.3 Cookie / Login 头域
非常重要!!!类似于会员卡
Cookie:最重要的header, 将cookie的值发送给HTTP 服务器
3.2.4 Entity:
Content-Length:发送给HTTP服务器数据的长度
Content-Type:发送POST的时候,body的数据类型声明
3.2.5 Miscellaneous
Referer :提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站
3.2.6 Transport
图片.png3.3 中间空一行
3.4 请求body:请求参数
Get 的请求参数都在请求行里,可以在Webforms 的QueryString查看(Fiddler)
图片.png
Post 的请求参数是在QueryString + body 中
图片.png
body: Content-type
图片.png
4. response 部分
图片.png4.1 response 组成
-
状态行
-
消息报头
图片.png
图片.png -
空行
-
响应正文
4.2 response 状态码
1xx:指示信息--表示请求已经接受,继续处理
2xx:成功--表示请求已被成功接受、理解、接受
如:200 OK //客户端请求成功(不代表登录成功)
3xx:重定向--要完成请求必须进行进一步的操作
如:302 //未登录状态下,编辑某篇文章,会重新跳转到登录界面,要求登录
4xx:客户端错误--请求有语法错误或请求无法实现
400 Bad Request// 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,该状态码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但拒绝提供服务
404 Not Found // 请求资源不存在,如输入了错误的 URL
5xx:服务器错误--服务器未能实现合法的请求
500 Internal Server Error // 服务器发生不可预期的错误
503 Server Unavailable // 服务器当前不能出来客户端的请求,一段时间后可能恢复正常
网友评论