HTTP协议

HTTP协议

HTTP协议的组成

请求

请求行:请求方式 请求地址(url) 请求协议
请求头:key:value
/r/n(空行)
请求主体:xxxxx(也可以没有)

请求示例

POST \hello HTTP\1.1
Host: localhost
Content-type: application/x-www-form-urlencoded
Content-length: 5

age=5

请求方式

GET POST HEAD PUT

HEAD 和GET基本一致,只是不返回内容

TRACE DELETE OPTIONS

TRACE 用了代理,可查看代理是否篡改了你的HTTP请求,服务器会把他接收到的HTTP请求返回给你

OPTIONS 可以返回服务器支持的请求方式

注意:这些请求方式虽然HTTP里面规定了,但服务器未必允许或支持这些方式

响应

响应行:协议 状态码 状态文字
响应头:key:value
/r/n(空行)
响应主体:xxxxx(也可能没有)

响应示例

HTTP/1.1 200 OK
Content-type:text/html
Content-length:5

hello

状态码和状态文字

状态码定义说明
1XX信息接收到请求,继续处理
2XX成功操作成功地收到,理解和接受
3XX重定向为了完成请求,必须采取进一步措施
4XX客户端错误请求的语法有错误或不能完全被满足
5XX服务端错误服务器无法完成明显有效的请求

200 OK 请求成功
301/302 永久/临时重定向
304 Not Modified 未修改(客户端可用缓存)
307 请求保持

404 网页不存在
503 服务器暂不可用
500 服务器内部错误

HTTP缓存

服务器发送etag modified等信息,对不经常变更的资源做一个标记(如图片),浏览器下次带着这些头信息发给服务器进行校验,如果发生改变,则重新响应,否则不响应内容,浏览器直接从缓存中读取,可以降低服务器请求压力。
有些服务器之间可以用Cache_control头信息进行缓存控制

头信息: Referer

这个头部信息可以携带获取资源的主站信息,以判断我们的服务器资源被谁访问了,可以以此来制作防盗链

头信息:Content-Encoding

为了提高网页传输速率,服务器会对内容进行压缩。
常见的有:gzip压缩、deflate压缩、compress压缩、sdch压缩(Google Chrome曾推)

服务器如何知道我们是否支持gzip等压缩方式呢?
答:客户端可以发送一个Accept-Encoding:xxxx,xxxx,…
与服务器协商

HTTP协议与持久链接+分块传输–>反向ajax

反向ajax又叫comet, server push,服务器推技术.
应用范围:网页聊天服务器.

原理:一般而言, HTTP协议的特点连接<->断开.
具体什么时间断开?
答:服务器响应content-length,收到到指定length长度的内容时,也就断开了

在HTTP1.1协议中,允许你不写content-length,比如要发送的内容长度确实不知道时.
这时需要一个特殊的头信息 Content-type:chunked

分块传输的原理是这样的:
123H\r\n
123H个长度的内容传输给给客户端

41H\r\n
浏览器继续接收41H长度的内容

0\r\n (服务器说内容发完了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值