HTTP协议总结

一、简介

HTTP也叫超文本传输协议,是应用层协议,支持C/S模式,浏览器作为HTTP的客户端通过url向HTTP服务端,也就是WEB服务器发送请求。
http协议是无连接,无状态的。无连接指的是当服务器处理完客户端的请求,并收到客户的应答后,断开链接;无状态指的是对于事务处理没有记忆能力。

二、HTTP请求

http请求由四部分组成:
请求行,消息报头,空行,请求正文

1. 请求行

请求行由三部分组成:
方法+url+版本
其中请求方法有很多,具体如下表所示:

方法含义
GET请求指定的页面信息,并返回实体主体
HEAD类似于get,但返回的响应中没有具体内容,用于获取报头
PUT从客户端向服务器端传递的数据取代指定文档的内容
DELETE请求服务器删除指定的页面
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),POST 请求可能会导致新的资源的建立或已有资源的修改
CONNECT要求将连接改为管道方式的代理服务器
OPTIONS允许客户端查看服务器的性能
TRACE请求服务器在响应中的实体主体中返回所收到的请求内容
PATCH对 PUT 方法的补充,用来对已知资源进行局部更新

eg1:请求资源
请求:

GET /index.html HTTP/1.1
HOST:www.xxxx

响应:返回www.xxxx/index.html的页面资源

eg2:传输实体
请求:

POST /index.cgi HTTP/1.1
Host:www.xxxx
Content-Length:1560

响应:
返回cgi程序接收数据的处理结果

eg3:传输文件
请求:

PUT /index.html HTTP/1.1
Host:www.xxxx
Content-Type:text/html
Content-Length:1560

eg4:获取报文首部
与get方法一样,只是不返回报文主体,一般用于确认URL的有效性及更新时间等

eg5:删除文件
请求:

DELETE /index.html HTTP/1.1
Host:www.xxxx

与put相反

eg6:询问服务器支持的方法
请求:

OPTIONS * HTTP/1.1 
Host:www.xxxx

响应:

HTTP/1.1 200 OK
Allow:GET,POST,HEAD,OPTIONS

注:如果不是访问特定资源而是对服务器本身发起请求,可以用* 代替请求url

eg7:追踪路径
请求:

TRACE / HTTP/1.1
Host:www.xxxx
Max-Forward:2

响应:

HTTP/1.1 200 OK
Content-Type:message/http
Content-Length:1024

TRACE / HTTP/1.1
Host:www.xxxx
Max-Forward:2

注:Max-Forward值,每经过一个服务器就-1,当为0时停止继续传输,当前服务器返回状态码为200的响应。

eg8:用隧道协议连接代理
请求:

CONNECT index.html HTTP/1.1
Host:www.xxxx

自己的理解:
(1). 一个 url 地址,用于描述一个网络上的资源,而HTTP中常用的请求方法put,delete,get,post就对应着对这个资源的增、删、查、改4个操作。
(2). GET一般用于获取资源信息,而POST一般用于更新资源信息。还有一个区别是参数:不带参数时,区别就是第一行方法名不同;带参数时,GET 方法的参数应该放在 url 中(写在 ? 后面,用 & 分割),POST 方法参数应该放在 body 中。

2. 消息报头

指的是本次请求的属性,是用冒号分割的键值对;每组属性之间使用\n分隔。
常见的请求报头header字段:

字段含义
Accept指定客户端接收哪些类型的信息。eg:text/html:希望接收html的文本文件
Accept-Encoding指定可接收的内容编码
Accept-Language用于指定接收的自然语言
Authorization用于证明客户端有权查看某个资源
Host用于指定被请求资源的Internet主机和端口号,即域名,一般从url中提取出来,默认端口是80,可以指定端口
User-Agent服务器可以从这个报头域中获取客户端的操作系统、浏览器和其它属性
refer告诉服务器客户是从哪个页面链接过来的
cookie

由于HTTP是无状态协议,但是为了实现期望的保持状态功能,引入了cookie技术。

3. 空行

用来区分报头与报文,遇到空行表示Header部分结束

4. 请求正文

空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度。

三、HTTP响应

HTTP响应也是四个部分组成:
分别是:状态行,消息报头,空行,响应正文.

1、状态行

状态行由三部分组成:
版本号+状态码+状态码解释
这里状态码分为很多种,解释如下:
状态代码由三种数字组成,第一个数字定义了响应的类别,有五种可能取值:

类别解释
1xxInformational(信息性状态码)接受的请求正在处理
2xxSuccess(成功状态码)请求正常处理完毕
3xxRedirection(重定向状态码)需要进行附加操作以完成请求
4xxClient Error(客户端错误状态码)服务器无法处理请求
5xxServer Error(服务端错误状态码)服务器处理请求出错

常见的状态码解释:

状态码解释
200OK(客户请求成功)
400Bad Request(客户端请求由于语法错误,不能被服务器所理解 )
403Forbidden(服务器收到请求,但是拒绝提供服务 )
404Not Found (请求资源不存在,eg:输入了错误的URL )
500Internal Server Error(服务器发生不可预期的错误 )
503Server Unavailable(服务器当前不能处理客户端的请求,一段时间后,可能恢复正常 )
2、Header

Header: 冒号分割的键值对;每组属性之间使用\n分隔
常见响应字段:

字段解释
Accept-Ranges是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机请求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息
实体首部字段

针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体相关的信息。

字段含义
Allow资源可支持的HTTP方法
Content-Encoding实体主体适用的编码方法
Content-Language实体主体的自然语言
Content-Length实体主体的大小(字节)
Content-Location替代对应资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体的媒体类型
Expires实体主体过期的日期时间
Last-Modified资源的最后修改日期时间
3、空行

遇到空行表示Header部分结束

4、body

空行后面的内容都是Body.
Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在 body中。

四、HTTP和HTTPS的区别

区别主要是在传输层加入了SSL(或TLS)。改变了HTTP协议的明文传输方式,保护了数据的安全性和完整性,提供对网站服务器的身份认证。

  1. HTTPS协议需要申请证书,一般免费证书很少,需要交费。
  2. http以明文的形式传输信息,https则是具有安全性的ssl加密传输协议
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口不同,前者是80,后者是443
  4. HTTPS 在 HTTP 传输协议的基础上对网站进行认证,给予它独一无二的身份证明,再对网站数据进行加密,并对传输的数据进行完整性验证。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值