HTTP协议

HTTP协议

一、概述

  • 协议:协议是指双方,或多方,相互约定好,大家都需要遵守的规则。

  • HTTP协议:又叫超文本传输协议,是客户端和服务器之间通信时,发送的数据,需要遵守的规则,其通过网络传输HTML文档数据。HTTP协议中传输的数据叫报文。

  • 特点:

    1. 基于TCP/IP的高级协议。
    2. HTTP可以传输任意数据类型,比如文本,图片,音频,视频等。
    3. 基于请求/响应模型的:一次请求对应一次响应。
    4. 无状态的:每次请求之间相互独立,不能交互数据。

二、请求

  • 客户端给服务器发送数据称为请求。

  • 分类:

    1. GET请求:会把请求参数拼接在URL后面,数据大小有限制,get请求没有请求体。
    2. POST请求:请求会将请求参数放到请求体里面,数据大小无限制。

2.1 GET请求

格式:

  1. 请求行:
    1. 格式:请求方式 /请求的资源路径?请求参数 协议/版本
    2. 例如:GET /login.html HTTP/1.1
  2. 请求头
    1. 格式:key:value,value
    2. 例如:Accept: text/plain, text/html

2.2 POST请求

格式:

  1. 请求行:
    1. 格式:请求方式 /请求的资源路径?请求参数 协议/版本
    2. 例如:POST /login.html HTTP/1.1
  2. 请求头
    1. 格式:key:value,value
    2. 例如:Accept: text/plain, text/html
  3. 请求空行:用于分割POST请求的请求头,和请求体的。
  4. 请求体:封装POST请求消息的请求参数的,就是发送给服务器的数据。

请求代码案例:

POST /login.html	HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0	
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
		
username=zhangsan	

2.3 常用的请求头

Header解释示例
Accept指定客户端能够接收的内容类型Accept: text/plain, text/html
Accept-Charset客户端提交的表单使用的编码类型Accept-Charset: iso-8859-5
Accept-Encoding浏览器发给服务器,声明浏览器支持的编码类型Accept-Encoding: compress, gzip
Accept-Language浏览器可接受的语言Accept-Language: en,zh
Connection表示是否需要持久连接。(HTTP 1.1 默认进行持久连接)Connection: close
Host指定请求的服务器的域名和端口号Host:localhost:8080
User-AgentUser-Agent 的内容包含发出请求的用户信息User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Date时间Date: Tue, 11 Jul 2000 18:23:51 GMT

三、响应

3.1 基本内容

  • 服务器给客户端回传数据称为响应。

格式:

  1. 响应行
    1. 格式:协议/版本 响应状态码 响应的描述
    2. 例如:HTTP/1.1 200 OK
  2. 响应头
    1. 格式:key:value
    2. 例如:Server:apache tomcat
  3. 响应空行:用于分割响应头和响应体的。
  4. 响应体:服务器回传给客户端的数据。

响应代码案例:

HTTP/1.1 200 OK
Server:apache tomcat
Content-Encoding: gzip 			
Content-Length: 80 			
Content-Language: zh-cn 		
Content-Type: text/html; charset=GB2312 

<html>
	<head>
		<title>$Title$</title>
	</head>
	<body>
		hello , response
	</body>
</html>

3.2 响应状态码

响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。

  1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码

  2. 2xx:成功。代表:200

  3. 3xx:重定向。代表:302(重定向),304(访问缓存)

  4. 4xx:客户端错误。

代表:
* 404(请求路径没有对应的资源)
* 405:请求方式没有对应的doXxx方法

  1. 5xx:服务器端错误。代表:500(服务器内部出现异常)

3.3 常用的响应头

Header解释示例
Location用来重定向接收方到非请求 URL 的位置来完成请求或标识新的资源Location: http://www.baidu.org/index.jsp
Server服务器型号Server: apache tomcat
Content-Encodingweb 服务器支持的返回内容压缩编码类型。Content-Encoding: gzip
Content-Type服务器返回的文本采用编码类型Content-Type: text/html; charset=GB2312
Content-Length数据长度Content-Length: 80
Content-Language语言环境Content-Language: zh-cn
Date请求响应的时间Date: Tue, 11 Jul 2000 18:23:51 GMT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值