HTTP协议基本介绍

一、 HTTP说明

1.HTTP简介

  • 概念:HyperText Transfer Protocol,超文本传输协议,规定了浏览器与服务器之间数据传输的规则
  • 特点:
    1. 基于TCP协议:面向连接,安全
    2. 基于请求-响应模型:一次请求对应一次响应
    3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
  • 缺点:多次请求间无法共享数据(使用会话技术cookie、session解决这个问题)
  • 优点:简单快速、灵活

2.HTTP请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT 方法。

3.HTTP工作原理

HTTP协议基于客户/服务器模式,且面向连接。典型的HTTP事务处理包含如下过程。
以下是 HTTP 请求/响应的步骤:

1、客户端与服务器建立连接
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

2、客户向服务器发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头、空行和请求体4部分组成。

3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由响应行、响应头、空行和响应体4部分组成。

4、客户与服务器关闭连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

二、 HTTP请求数据格式

HTTP请求由三部分组成,分别是:请求行、请求头(请求报头)、请求体(请求正文)

请求行
请求头1
请求头2
...
请求空行
请求体

1.请求行

1. 请求行:请求数据的第一行。格式如下:
method request-URI HTTP-Version
其中method 代表请求方式,request-URI 代表请求统一资源表示符,HTTP-Version 代表协议版本。如下图:在这里插入图片描述 对于此请求行,GET 代表请求方式,/ 代表请求统一资源表示符,HTTP/1.1 代表协议版本。


2.请求头

2. 请求头:在请求行的下一行,格式为key:value形式
HTTP常见请求头:

Content-Type: 数据类型(text/html等)
Content-Length: Body的长度
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能.

如下图: 在这里插入图片描述


3.请求体

3. 请求体:POST请求的最后一部分,存放请求参数

  • GET与POST请求区别
  1. GET请求的请求参数在请求行中,没有请求体。POST的请求的请求参数在请求体中。
  2. GET请求的请求参数大小有限制,POST没有。
  • GET和POST的区别

    ①GET请求的请求参数会放在请求行中、URL之后,以?分割URL和传输数据,参数之间以&相连,如csdn.net/md?name=test1&id=123。POST的请求的请求参数在请求体中。

    ②GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

    ③GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

    ④GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

三、 HTTP响应数据格式

在接受和解释请求消息后,服务器返回一个HTTP响应信息。HTTP响应也是由三部分组成,分别是:响应行、响应头、响应体。

响应行
响应头1
响应头2
...
响应空行
响应体

1.响应行

1. 响应行:响应数据的第一行。格式如下:
HTTP-Version status-code status-phrase
其中HTTP-Version代表协议版本,status-code 代表响应状态码,status-phrase代表状态描述。如下图:在这里插入图片描述
对于此响应行,HTTP/1.1 代表协议版本,200代表响应状态码,OK表示状态码描述。

2.响应头

2. 响应头:在响应行的下一行,格式为key:value形式 HTTP常见响应头

Content-Type:表示被响应内容的类型,例如text/html,image/jpeg
Content-Length:表示被响应内容的长度(字节数)
Content-Encoding:表示该响应压缩方式,例如gzip
Cache-Control:指示客户端如何缓存,例如max-age=300表示最多可以缓存300秒

如下图:
在这里插入图片描述

3.响应体

3. 响应体:最后一部分,存放响应数据

四、HTTP之状态码

状态码由3位数字组成,第一个数字定义了响应类别,共5大类:

状态码分类说明
1xx响应中–临时状态码,表示请求已接收,继续处理
2xx成功–表示请求已被成功接收并处理完成
3xx重定向–让客户端再次发起一个请求以完成处理
4xx客户端错误–请求有语法错误或请求无法实现
5xx服务器端错误–服务器未能实现合法的请求

常见状态码

状态码状态码描述解释
200OK请求已正常处理
302Found指示锁清秋的资源已移动到由Location响应头给你的那个的URL,浏览器自动重新访问这个页面
304Not Modified隐式重定向,告知客户端所请求的资源至上次取得后服务器并未改变,直接使用本地缓存即可
400Bad Request客户端有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但拒绝提供服务。例:无权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或网站资源被删除
428Precondition Required服务器要求有条件的请求,告诉客户端想要访问某资源,必须携带特定的请求头
429Too Many Requests请求太多,可以限制客户端请求某个资源的数量,配合Retry-After(多长时间后可以请求)响应头一起使用
500Internal Server Error服务器发生不可预期的错误。服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障
503Service Unavailable服务器暂时处于超负载或正在停机维护,现在无法处理请求
511Network Authentication Required客户端需要进行身份验证才能获取网络权限
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值