浅谈HTTP

一.HTTP原理

通过学习TCP/IP协议我们已经能实现从A到B的通信,然而我们还需要一层协议,不关心通信细节,只关心应用细节.这就是应用层协议,不同场景下使用的应用层协议是有不同种类的.其中HTTP就是其中之一.常见的网页都是html构成的,而要把网页信息通过网络传送到客户端,或者用户数据上传到服务器,就需要HTTP协议.

1.URL

(1)域名的方式:http://域名/服务路径?k1=v1&k2=v2
(2)IP的方式:http://ip:port/服务路劲?k1=v1&k2=v2

2.HTTP协议格式

请求行

由三部分组成,分别为:[方法]+[URL]+[版本],之间由空格分隔

请求头部

请求头部为请求报文添加了一些附加信息,由"键/值"对组成,每对一行,键值之间使用冒号分隔开.遇到空行表示Header部分结束.这一行很重要,必不可少.

常见请求头如下:

请求头说明
Host客户端告知服务器,所请求的资源在那个主机的那个端口上
User-agent发送请求的应用程序名称
Content-Type数据类型(text/html)
Content-LengthBody的长度
Referer当前页面是从那个页面跳转过来的
location搭配3XX状态码使用,告诉客户端接下来要去哪里访问
Cookie用于在客户端存储少量信息,通常用于实现会话(Session)的功能

请求正文

Body允许为空字符串.如果Body存在.则在Header中会有一个Content-Length属性来标识Body的长度.

状态行

由三部分组成,分别是:版本协议,状态码,状态描述.之间由空格分隔

状态代码为3位数字,
100~199的状态码是信息性状态码,就收的请求正在处理.
200~299的状态码表示成功,请求正常处理完毕.
300~399的状态码指重定向,需要进行附加操作以完成请求.
400~499的状态码指客户端请求出错,服务器无法处理请求
500~599的状态码指服务端出错.服务器处理请求出错.

响应头部

与请求头部类似,为响应报文添加了一些附加信息

3.HTTP 方法

方法说明
GET获取资源
POST传输实体主体
HEAD获得报文首部
TRACE追踪路径

二.session和cookie

Http是一个无状态协议,就是说这一次请求和上一次请求时没有任何关系的,互不认识的.没有关联的.这种无状态的好处是快速.坏处时需要进行用户状态保持,必须使用一些方式或者手段:session和Cookie

2.1Cookie

设置cookie的 方法在HTTP的Response报头中可以携带Set-Cookie字段来完成.

2.2session

2.3两者区别

  • cookie以文本文件的格式存储在浏览器中,而session存储在服务端
  • 因为每次发起Http请求,都要携带有效Cookie信息,所以Cookie一般都有大小限制,以防止增加网络压力,一般不超过4K
  • 可以轻松访问cookie值但是我们无法轻松访问会话值,因此session方案更安全.

2.4本地禁止cookie

从上面可以看出,要使用session,其实还是需要使用cookie机制来保存session id的,那么万一在客户端cookie机制被禁掉了,那么session貌似也就无法使用了?替代方法是有的.经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后边.还有一种技术叫做表单隐藏字段.就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递给服务器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值