Http 协议总结

Http协议请求和响应

这里写图片描述

Http请求报文格式

这里写图片描述

由上图可知,请求报文分为:
1. 请求行(请求方法+url+协议版本)
2. 请求头部(…)
3. 回车+换行
4. 请求数据

常用请求头部:
Accept:响应接收类型参考W3C对接收类型的定义
Cookie:保存相关数据带回并保存在服务端,如JSESSIONID(与服务器的SESSION对象相关联),SESSION在COOKIE打开的时候是把SESSIONID写在COOKIE中的,但如果你关闭了SESSION那么容器会采用在URL中加上JSESSIONID字段来实现对话跟踪。
User-Agent:浏览器类型和版本,可用于统计或标识
Content-Type(post特有):请求body的类型,参考链接
Content-Length(post特有):请求body的长度

Http响应报文格式:

这里写图片描述

由上图可知,响应报文分为:
1. 状态行(协议版本+状态码+状态码描述)
2. 响应头部(…)
3. 回车+换行
4. 响应正文

常用响应头部:
Location:外部重定向redirect,通过此头部告知。
Cache-Control:控制响应缓存配置
Set-Cookie:服务端可以设置客户端的Cookie

状态码范围
a)  200~299的状态码表示成功
b)  300~399的状态码指资源重定向
c)  400~499的状态码指客户端请求出错
d)  500~599的状态码指服务端出错

常见状态码
200 响应成功
301 永久重定向
302 临时重定向,跳转地址通过响应头中的Location属性指定,网址劫持
400 客户端请求有语法错误,不能被服务器识别
403 服务器接收到请求,但是拒绝提供服务(认证失败)
404 请求资源不存在
500 服务器内部错误

301302重定向的区别
永久重定向,通常搜索引擎的爬虫将其网站索引和网页内容都会被全部替换;而301保留了网址索引而只替换了内容。如果A302临时重定向到B,A随时有可能改变主意显示本身或者做其他改变,等到搜索引擎蜘蛛抓取A的时候,实际上抓取的是目标地址B的内容,这样就导致A和B不同的地址有完全相同的内容,并且都被编入了索引。

一次Http请求和响应的完整过程

1)  浏览器输入url
2)  DNS递归查询和解析:浏览器缓存+系统缓存(网关)+路由器缓存+根域名服务器+顶级域名服务器,最终返回相对应的ip地址
3)  浏览器向服务器发送http请求
4)  客户端和服务端三次握手建立tcp连接
5)  客户端发送请求头信息+请求内容+空行(表示结束)
6)  服务器处理请求,服务器接收后将请求传给servlet容器然后再到指定的servlet实例,解析请求参数和cookie并且产生请求对象,实例对请求对象进行处理后,将需要响应的内容写入响应
7)  服务端发出相对应的响应
8)  服务器发出头信息+content-Type对应的响应内容+空行(表示结束)
9)  客户端和服务器四次挥手断开tcp或者保持长连接
10) 浏览器获取html
11) 浏览器渲染html页面并展示

Session和Cookie的区别

Session保存在服务器内存,而Cookie保存在客户端的浏览器内存

Session保存的过程:
1.首先在服务器内存生成会话对应的Session对象,对象有着唯一的id标识,叫做JSESSIONID
2.然后JSESSIONID保存至HttpRequest的Cookie中,然后跟随HttpRequest返回至浏览器客户端保存,如果浏览器的Cookie被禁用,可以通过URL重写实现JSESSIONID传递,就是把session id直接附加在URL路径的后面,附加方式也有两种:
a)  http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-14578876
b)  http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
3.下次访问的时候,HttpRequest的头部会自动带上JSESSIONID,这样服务器可以通过这个唯一的id标识从内存找出这个被保存的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值