http简介

HTTP简介

HTTP协议

HTTP是超文本传输协议(hypertext transfer protocol),是TCP/IP协议的一个应用层协议,用于定义web浏览器与web服务器之间交换数据的过程。客户端(client)连上web服务器后,想获得web服务器中的某个web资源,需要遵循一定的通讯格式,HTTP协议就是用于定义web客户端和web服务器间通讯的格式。

HTTP 1.0和HTTP 1.1的区别

  • 在http 1.0协议中,客户端与web服务器建立连接之后,只能获得一个web资源。
  • 在http 1.1协议中,允许客户端与web服务器建立连接后,只在一个连接上获取多个web资源。

HTTP报文

HTTP报文是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟可选的数据模块(由一个空行分隔)。

HTTP使用术语流入(inbound)和流出(outbound)来描述HTTP事务处理(transaction)的方向
- 流入:流向服务器
- 流出:流出服务器

报文始终向下游(downstream)流动,所有报文的发送者都在接受者的上游(upstream)

HTTP请求(request)

请求报文请求服务器对资源进行一些操作。
客户端连接上服务器之后,向服务器请求某个web资源,称之为客户端向web服务器发送了一个HTTP请求。
一个完整的HTTP请求包括如下内容:
- 对报文进行描述的起始行(start line)
- 包含属性的首部块(header)(消息头)
- 包含数据的主体(body)(可选)

请求报文格式:

<method> <request-URL> <version>(CRLF)
<headers>(CRLF)
(CRLF)
<entity-body>(CRLF)

HTTP_request “HTTP请求报文”

起始行(start line)

请求报文的起始行或称为请求行,包含了一个方法、一个请求URL和HTTP版本号。
- 方法描述了服务器应该执行的操作
- 请求URL描述了要对哪个资源执行这个方法
- HTTP版本号告知服务器,客户端使用的是哪种HTTP

常用HTTP方法

方法用来告诉服务器做什么事情,浏览器的默认请求方法为GET

方法描述是否包含主体
GET从服务器获取一份文档
HEAD只从服务器获取文档的首部
POST向服务器发送需要处理的数据
PUT将请求的主体部分存储在服务器上
TRACE对可能经过代理服务器传送到服务器上去的报文进行追踪
OPTIONS决定可以在服务器上执行那些方法
DELETE从服务器上删除一份文档
扩展方法对HTTP规范的扩展,由服务器自己实现

HTTP常用请求首部块

键值对列表,请求首部块中可以包含 通用首部、请求首部、实体首部、扩展首部

首部名称描述首部实例
accept浏览器通过这个头告诉服务器,它所支持的数据类型Accept: application/x-ms-application, image/jpeg
Accept-Charset浏览器通过这个头告诉服务器,它支持哪种字符集Accept-Charset:utf-8
Accept-Encoding浏览器通过这个头告诉服务器,支持的压缩格式accept-encoding:gzip, deflate, br
Host浏览器通过这个头告诉服务器,想访问哪台主机Host: localhost:8080
If-Modified-Since浏览器通过这个头告诉服务器,缓存数据的时间
Referer浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
Connection浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接Connection: Keep-Alive

HTTP响应(response)

响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。

一个HTTP响应代表服务器向客户端回送的数据,包括:
- 用于描述服务器对请求的处理结果的状态行
- 消息头
- 实体内容

响应报文格式:

<version> <status> <reason-phrase>(CRLF)
<headers>(CRLF)
(CRLF)
<entity-body>(CRLF)

HTTP响应报文

起始行(start line)

响应报文的起始行或称为响应行,包含了响应报文使用的HTTP版本、数字状态码,以及描述操作状态的文本形式的原因短语。

常用响应状态码

状态码告诉客户端发生了什么

整体范围已定义范围分类含义
100~199100~101信息成功表示成功接收请求,要求客户端继续提交下一次请求才能完成整个过程
200~299200~206成功表示成功接收请求并已完成整个处理过程,常用200
300~399300~305重定向为完成请求,客户需进一步细化请求。例如,请求的资源已经移动到一个新的地址,常用302、304
400~499400~415客户端错误客户端的请求有错误,常用404
500~599500~505服务器错误服务器端出现错误,常用500
----

HTTP常用响应头

响应首部可以包含 通用首部、响应首部、实体首部、扩展首部

首部名称描述首部实例
Location服务器通过这个头,来告诉浏览器跳到哪里
Server服务器通过这个头,告诉浏览器服务器的型号server:HTTP server (unknown)
Content-Encoding服务器通过这个头,告诉浏览器,数据的压缩格式content-encoding:gzip
Content-Length服务器通过这个头,告诉浏览器回送数据的长度content-length:212
Content-Language服务器通过这个头,告诉浏览器语言环境
Content-Type服务器通过这个头,告诉浏览器回送数据的类型content-type:application/json; charset=UTF-8
Refresh服务器通过这个头,告诉浏览器定时刷新
Content-Disposition服务器通过这个头,告诉浏览器以下载方式打数据content-disposition:attachment; filename=”f.txt”
Transfer-Encoding服务器通过这个头,告诉浏览器数据是以分块方式回送的
Expires控制浏览器不要缓存expires:Fri, 01 Jan 1990 00:00:00 GMT
Cache-ControlCache-Control: no-cache
PragmaPragma: no-cache
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值