关于http协议的总结
- http协议知识结构图

- 简介
HTTP(HyperText Transfer Protocol),超文本传输协议,是Web应用的基本协议
HTTP规定了客户端(浏览器)和服务器之间的通信步骤以及通信时所传输的数据的含义。最基本的模型是客户端向服务器发送一个请求,服务器收到请求后解析并处理请求,最后向客户端返回一个响应
HTTP协议主要包括请求和响应两部分
- http请求
请求包含三部分内容:请求行、请求头和请求体
常用请求方式有两种:get和post
get请求的请求信息:
GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Accept: text/html,application/xhtml+xml...
Referer: http://localhost:8080/test/register.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8
get请求时会把表单数据(请求参数)追加到请求路径后面,而不是放在请求体中。其中使用?连接请求路径和请求参数,使用=连接键和值,使用&连接键值对
post请求的请求信息:
POST /test/register HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 31
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml...
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8 name=dandan&birthday=2017-09-12
post请求时会把表单数据放在请求体中
请求行 GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1
|
GET |
请求方式 |
|
/test/register |
请求路径 |
|
name=dandan&birthday=2017-09-12 |
查询字符串 |
|
HTTP/1.1 |
协议以及版本号 |
请求头 每个请求头都有特定含义
|
User-Agent |
浏览器版本等信息 |
|
Referer |
来源页面 |
|
Accept-Encoding |
浏览器支持的压缩方式 |
请求体 只在post请求时请求体才可能有数据(请求头和请求体之间需要空一行)
|
name=dandan&birthday=2017-09-12 |
注意使用HTTP协议传输文本数据时,全部请求信息不可包含非西文字符,比如中文字符,如果需要包含非西文字符,必须在传输数据前使用URL编码把非西文字符编码为西文字符,其实转换是由浏览器自动完成的
- http响应
服务器需要为每个请求都生成一个响应,响应也包含三部分内容:状态行、响应头和响应体
响应内容(响应并不分get或者post):
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"164-1505209589118"
Last-Modified: Tue, 12 Sep 2017 09:46:29 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 164
Date: Tue, 12 Sep 2017 09:47:12 GMT <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
注册成功!
</body>
</html>
状态行 HTTP/1.1 200 OK
|
HTTP/1.1 |
协议和版本 |
|
200 |
状态码 |
|
OK |
状态描述 |
常见状态码及其含义
|
200 |
请求处理成功 |
|
302 |
重定向,浏览器会重新访问Location响应头指定的路径 |
|
304 |
资源未修改,即告诉浏览器直接使用缓存数据 |
|
404 |
资源未找到 |
|
405 |
不支持GET或POST请求(没有重写HttpServlet的doGet()或doPost()) |
|
500 |
服务器错误(代码抛出异常) |
响应头 每个响应头都有特定含义
|
Content-Type |
响应体数据类型 |
|
Content-Length |
响应体数据长度 |
响应体 响应体数据可能是一个页面文本、一张图片等(响应头和响应体之间需要空一行)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
注册成功!
</body>
</html>
关于http协议的总结的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- qt 中图表 QtCharts 的使用
要使用QtCharts 需要几个步骤: 1. pro 文件中 修改 QT += charts 2. 把 chart 相关的头文件放在 ui 相关的头文件上面,否则会导致 编译错误,找不到 chartV ...
- 实验吧-隐写-FIVE1、so beautiful so white(文件头修改)
FIVE1 下载图片,kali下foremost恢复文件,将得到的图片用Winhex打开进行观察,发现最后面有一段貌似是代码的东西. LS0uLi4gIC4tICAuLi4uLiAgLS0uLi4gI ...
- junit基础学习之-测试controller层(2)
准备工作: eclipse本身带有junit4,可以直接build path,加入junit. 连接数据库的配置文件需要修改,之前的文件是采用properties+xml文件的形式,但是在测试的时候因 ...
- springboot - 映射HTTP Response Status Codes 到 静态 HTML页面
1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...
- 学习spring第6天(aop获取目标方法参数)
关于<aop:around>中的方法,需要第一个参数为ProceedJoinPoint,在方法体中通过该参数调用proceed()才能使目标方法得到调用. 当一个切面中有多个<aop ...
- DataStructuresAndAlogorithm--红黑树
简介 为了理解红黑树(red-black tree)是什么,首先需要知道二叉树. 定义1:二叉树是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的,称为该根的左子树和右子树的二叉树组成 ...
- 《新标准C++程序设计》1.7-1.10(C++学习笔记2)
1.内联函数(inline关键字) eg.inline int Max(int a,int b) { if(a>b) return a; return b; } 当编译器处理调用内联函数的语句时 ...
- JS高级学习笔记(10) 之 js 时怎么解析HTML标签的
DOM 节点类型 浏览器渲染过程 浏览器是怎么把HTML标签语言和JavaScript联系在一起的,这就是我们常说的DOM. 浏览器中的DOM解析器把HTML翻译成对象(object),然后JavaS ...
- 学术Essay写作关键:避免冗余
“冗余”(Redundant)意味着多余的.不必要的.在Essay写作中,redundant expression(即冗余表达)指的是在一个短语或一句句子中有一个单词完全重复了同一短语或句子中的另一个 ...
- 8.scrapy的第一个实例
[目标]要完成的任务如下: ※ 创建一个 Scrap项目.※ 创建一个 Spider来抓取站点和处理数据.※ 通过命令行将抓取的内容导出.※ 将抓取的内容保存的到 MongoDB数据库.======= ...