详解Http协议

一、前言

备注:该技术博客的内容是我根据技术视频整理与总结的(并非复制粘贴)。原视频源于黑马JavaWeb课程

二、概述

首先我们介绍一下它的概念

Http(Hyper Text Transfer Protocol):超文本传输协议、
什么是传输协议,传输协议指的是数据传输的协议。要传数据,需要有两端(客户端和服务器端)。传输协议定义了客户端和服务器端通信时,发送数据的格式


客户端给服务器端发送数据,也就是请求,服务器端收到了客户端请求,服务器要给客户端做出响应

传输协议:规定的是请求消息和响应消息的组成格式。

比如说,客户端给服务器端说话,发送了一些请求消息。服务器端要看得懂消息的前提要知道这个消息的组成规则格式。同理服务器给客户端发送响应消息,客户端要解析响应消息,客户端得知道响应消息的组成格式是什么才能完成解析动作。否则无法通畅交流

http协议的特点

  1. 基于TCP/IP的高级协议
  2. 默认端口号是80
  3. 基于请求/响应模型的(一次请求对应一次响应)
  4. 无状态的:每次请求之间相互独立,不能交互数据

历史版本(了解):

  • 1.0:客户端可以和web服务器连接后,只能获得一个web资源,断开连接(第二次请求资源请求不到)
  • 1.1:客户端可以与web服务器连接后,可以获得多个web资源,断开连接

三、请求行

请求消息数据格式

  1. 请求行

请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1

请求方式:
		HTTP协议有7种请求方式,常用的2种
				GET:
					1.请求参数在请求行中,在url后
					2.请求的url长度是有限制的
					3.不太安全
				POST:
					1.请求参数在请求体中
					2.请求的url长度是没限制的
					3.相对安全
  1. 请求头:客户端浏览器告诉服务器一些信息

请求头名称:请求头值

常见的请求头:
		1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
				可以在服务器端获取该头的信息,解决浏览器的兼容性问题
		2.Referer:http://localhost/login.html
				告诉服务器,我(当前请求)从哪里来
						作用:
								1.防盗链:
								2.统计工作:

在这里插入图片描述

  1. 请求空行

空行,就是用于分割POST请求的请求头,和请求体的

  1. 请求体(正文):封装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

四、HTTP响应消息

响应消息:服务器端发送给客户端的数据
	数据格式:
		1.响应行
			1.组成:协议/版本  响应状态码 状态码描述
			2.响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
				1.状态码都是三位数字
				2.分类:
					1.1xx:服务器接受客户端消息但没有接受完成,等待一段时间发送1xx多状态码
					2.2xx:成功。代表:200
					3.3xx:重定向。代表:302(重定向),304(访问缓存)
					4.4xx:客户端错误。
						代表:
							404(请求路径没有对应的资源)
							405(请求方式没有对应的doXxx方法)
					5.5xx:服务器端错误。代表:500(服务器内部出现异常)
			
		2.响应头
			1.格式:头名称:值
			2.常见的响应头:
				1.Content-Type:服务器告诉客户端本次响应体数据格式已经编码格式
				2.Content-disposition:服务器告诉客户端以什么格式打开响应体数据
					值:
						in-line:默认值,在当前页面内打开
						attachment;filename=xxx:以附件形式打开响应体。文件下载
		3.响应空行
		4.响应体:传输的数据
	
响应字符串格式:
			HTTP/1.1 200 OK
			Content-Type: text/html;charset=UTF-8
			Content-Length: 101
			Date: Wed, 06 Jun 2018 07:08:42 GMT
	
			<html>
			  <head>
			    <title>$Title$</title>
			  </head>
			  <body>
			  hello , response
			  </body>
			</html>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值