2020-07-08 HTTP协议学习
目录
1 HTTP协议
1.1 什么是协议(了解一下就可以)
1.2 HTTP请求报文
1.2.1 使用fiddler抓取信息
1.2.2 URL
1.2.3 常用请求头(Request Header)
1.3 响应报文
1.3.1 响应行---状态码status code
1.3.2 响应头
注意
1 HTTP协议
- Hyper Text Transfer Protocol(超文本传输协议)
- 用于从万维网服务器传输超文本到本地浏览器的传送协议
- HTTP协议是基于TCP(TCP:传输控制协议)的应用层协议,他不关心数据的传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80
- http是基于请求与响应模式的、无状态的、应用层的协议
完整的http协议包括请求和响应两块内容
1.1 什么是协议(了解一下就可以)
答:计算机中的协议和现实中的协议是一样的,一式双份、多份,双方/多方都遵从共同的一个规范,这个规范就可以称为协议。
计算机之所以能全世界互通,协议是功不可没,如果没有协议,计算机自说自话,根本谁都听不懂谁。
ftp、http、stmp、pop、tcp、ip协议
协议就是按规矩说话:你怎么问,我怎么答
客户端和服务器之间传输格式的一种协议:客户端发请求怎么发,服务器做响应怎么响应,客户端收到响应后又怎么解析。
计算机与网络设备要相互通信,双方要基于相同的方法,不同的硬件、操作系统之间的通信,也要基于相同的方法和规则:双方的、一致的
1.2 HTTP请求报文
请求报文由4部分组成: 可查看1.3.1 使用fiddler抓取信息
(1)请求行
请求行又分为3部分
请求方法 请求路径 所用的协议(GET /xxx/01.php HTTP/1.1)
请求方法:GET、POST、PUT、DELETE、TRACE、OPTIONS
请求方法 |
备注 |
GET |
请求资源:GET使用过程中最好给信息做加密处理,因为他所发送的数据也是url的一部分,数据在url中是对所有人都可见的(如他会将用户名密码显示在url后,如在url里 a=xx&b=xx ),url最大长度2048,参数会保留在浏览器历史中 |
POST |
提交资源:数据不会显示在url中,数据长度无限制,参数不会保存在浏览器历史中,相对于GET更安全。(一般从服务器取数据,查询操作用get,向服务器推数据,例如表单的增删改用post) |
Head |
获取响应头 |
PUT |
替换资源 |
DELETE |
删除资源 |
OPTIONS |
允许客户端查看服务器性能 |
TRACE |
回显服务器收到的请求,用于测试或诊断 |
Connect |
connect的作用就是将服务器作为代理,让服务器代替用户去访问其他网页(说白了,就是翻墙),之后将数据返回给用户。 |
请求所用的协议:一般是HTTP/1.1,0.9和1.0已经基本不用(现在已经有了HTTP/2.0了)
(2)请求头信息
(3)头信息结束后和主体信息之间要空一行
(4)请求主体信息
1.2.1 使用fiddler抓取信息
打开网页xx.xx.xx.xx:8088,输入用户名和密码,点击登录,打开fiddler,查看抓取到的链接
点击查看Raw行列
1.2.2 URL
- Uniform Resource Locator:统一资源定位符
- 用于描述网上的资源
- 格式:schema://host[:post#]/path/.../[?query-string]
- Scheme:协议,如http、https、ftp等
- Host:域名或者IP地址(域名通过DNS域名解析器,解析为一个ip)
- Port:端口
- Path:资源路径
- Query-string:发送的参数
- 如在百度搜索东西时,弹出来的数据
- https://www.bilibili.com/video/BV1vt411973Y?from=search&seid=10098655154753793675
1.2.3 常用请求头(Request Header)
请求头 |
描述(以下不一定每次都包含所有信息) |
Host |
主机ip地址或域名 |
User-Agent |
客户端相关信息,如果操作系统、浏览器等信息 |
Accept |
指定客户端接收信息类型,如:image/jpg,text/html,application/json |
Accept-Charset |
客户端接受的字符集,如gb2312、ios-8859-1 |
Accpet-Encoding |
可接受的内容编码,如gzip |
Accept-Language |
接受的语言,如Accept-Language:zh-cn |
Authorization |
客户端提供给服务端,进行权限认证的信息(授权) |
cookie |
携带的cookie信息(保存到客户端、也就是浏览器) |
Referer |
当前文档的url,即从哪个链接过来的(盗链??) |
Content-type |
请求体内容类型,如application/x-www-form-url |
Content-Length |
数据长度 |
Cache-Control |
缓存机智,如Cache-Control:no-cache |
Pragma |
防止页面被缓存,和Cache-Control:no-cache作用一样 |
如下:使用fiddler抓取到的数据
- POST http://xx.xx.xx.xx:8088/api/utility/user/get HTTP/1.1
- Host: xx.xx.xx.xx:8088
- Connection: keep-alive
- Content-Length: 14
- Accept: */*
- Origin: http://xx.xx.xx.xx:8088
- X-Requested-With: XMLHttpRequest
- User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36
- Content-Type: application/x-www-form-urlencoded; charset=UTF-8
- Referer: http://xx.xx.xx.xx:8088/main.html
- Accept-Encoding: gzip, deflate
- Accept-Language: zh-CN,zh;q=0.9
- Cookie:Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1591838338; loongaio=1t7c57i5tu79sxkhyt0uvncuf; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1592187134
- username=test1
1.3 响应报文
HTTP响应报文主要由状态行、消息报头、空一行、响应正文4部分组成
如2:
如3:
1.3.1 响应行---状态码status code
用以表示网页服务器HTTP响应状态的3位数字代码
- HTTP/1.1 200 OK
- 1xx :提示信息,请求被成功接收
- 2xx:成功(201-成功created)
- 3xx:重定向(304:状态行显示 not modify)
- 4xx:客户端错误(404:找不到路径)
- 5xx:服务端错误
1.3.2 响应头
响应头 |
描述 |
Server |
HTTP服务器的软件信息 |
Date |
响应报文的时间(什么时候响应回来) |
Expires |
指定缓存过期时间 |
Set-Cookie |
种cookie(设置cookie,种一些信息,之前的请求后续的接口需要用的) |
Last-Modified |
资源最后的修改时间 |
Content-type |
响应的类型和字符集,如text/html,application/x-www-form-url |
Content-Length |
内容长度 |
Connection |
如Keep-Alive(保持连接,但不是保持http连接,因为http是无法保持连接的,它没有状态。这个保持连接时保持底层的tcp连接,否则他会每次连接、断开、连接断开造成资源浪费,保留三次握手),表示保持tcp连接不关闭。 |
Location |
指明重定向的位置,新的url地址,如304、302的情况,fiddler找一个302的情况就可以进行查看 |
注意
- tcp有三次握手,相对udp更安全
- https相当于在http的基础上去加了一层ssl,加了一个安全的套接层,相当于他加了个证书。所以更安全
- Restful是一种设计的风格,是接口的一种架构方式,可以了解一下github,就是restful风格的这个接口的教科书,http是一种协议
- 外部是有可能拦截https的,如fiddler就可以拦截
- 开启fiddler之后HTTPS网页无法访问,是因为百度走的是https,fiddler伪造的证书遭到了拦截,就需要打开fiddler上设置tools--->options--->点击HTTPS--->如下图,如果其他的如firefox要用https,也需要从fiddler导出证书来进行导入到firefox中就可以正常使用。(firefox--->设置--->高级--->证书--->查看证书--->导入证书)
- fiddler抓包工具在Mac上使用不了,Mac系统用Charles
- 另外还有wireshark工具,比较全,像鼠标这些设备都可以抓下来
- 通过VPN连接的系统,需要vpn指定一个代理,不然抓不到,本身vpn就是一个代理,翻墙就是使用一个代理。蓝灯
- 浏览器能发送HTTP协议,HTTP协议一定要浏览器来发送吗?答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都能发。
2020-07-08 HTTP协议学习相关推荐
- 《惢客创业日记》2020.07.08(周三)给三剑客取名
今天的我,心态多少有点小崩溃,多项工作都遇到了阻力,首先是规划惢客电商的应用场景时,发现之前规划的很多页面在产品逻辑上都行不通,估计要面临着多个页面的返工. 其次是针对惢客免打扰中的防骚扰版块与另一个 ...
- 2020.07 学习日记
废话 寒假到现在,在家里玩了5个月,来学校又玩了大半个月.以为会做点东西了就什么都懂了,竟然没做准备就投了字节秋招提前批.结果被挂了之后,又被捞起来面试.可以说十分幸运了,但机会都是留给有准备的人 2 ...
- 第十弹:网络公开课,免费学习资源,2020.07.05更新
第十弹:网络公开课,免费学习资源,2020.07.05更新 按照个人兴趣整理的网络公开课资源导航网址:http://www.trochilidaetechnology.com/ 以下为[网络公开课]领 ...
- 【计算机网络学习笔记07】PPP协议、IP编址、NAT技术
[计算机网络学习笔记07]PPP协议.IP编址.NAT技术 一.PPP协议 是TCP/IP网络中最重要的点到点的数据链路层协议. 1 PPP协议的组成 1)链路控制协议:建立并维护数据链路连接(身份验 ...
- 信奥中的数学 相关资料汇总(2022.07.08)
信奥中的数学 数论篇 相关资料汇总(2022.07.07) 信奥中的数学 数论篇 相关资料汇总(2022.07.07)_dllglvzhenfeng的博客-CSDN博客 信奥中的数学 组合篇 相关资料 ...
- Bluetooth协议学习
蓝牙协议学习 背景知识 蓝牙(Bluetooth)是一个短距离无线传输的技术,工作在免证的ISM频段.最初名字为Wibree,在90年代由Nokia设计开发,随后转交给蓝牙特别兴趣小组(SIG)专门维 ...
- http协议学习系列
http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...
- Python每日一学 08——get()方法学习
Python每日一学 08--get()方法学习 文章目录 Python每日一学 08--get()方法学习 一.前言 二.题目 1.莫尔斯电码转换 2.凯撒密码加密 3.缩写月份单词 4.本月天数 ...
- 学习前端和后端必学之HTTP协议学习
1.HTTP协议学习目标: (1).调试AJAX应用"看不见摸不着"的错误 (2).进行Web访问优化---高阶面试题 2.面试题:浏览器中输入www.taobao.com直到看到 ...
- ModbusTCP协议学习
ModbusTCP协议学习 文章目录 ModbusTCP协议学习 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 2.2.1.功能码 2.2.2.PDU详细结构 ...
最新文章
- apache2.2.21 + php5.3.8 + mysql5.5配置
- Struts2的Stack Context和ValueStack
- amazeui学习笔记一(开始使用4)--Web App 相关
- linux phpunit 安装,在CentOS 7/CentOS 8系统中安装PHPUnit的方法
- 每个人都应有自己的作品
- php ftp上传文件 源码,PHP FTP上传文件
- 操作系统——Windows 控制台命令
- c语言超市收银台程序,超市收银电脑操作流程
- 安卓和win环境下扫描局域网下设备IP的工具
- 国产哈希算法WJLHA(六):自定义哈希长度的WJLHA3开源(JAVASCRIPT)
- 搜狐新闻文本分类数据集
- Nginx 301重定向域名
- SQL Developer 19.2.1下载安装
- 4P和4C的物理学分析
- js跳转页面与打开新窗口的代码
- LeetCode刷题(37)~无重复字符的最长子串
- 什么是红股什么是转增股
- Python:摘苹果
- java yyyymmddhhmm check_java8时间 yyyyMMddHHmmss格式转为日期的代码
- PDF文件JAVA去水印源码,java pdf增加水印示例源码
热门文章
- live2d_二次元 | live2d为你的网站博客增加萌萌哒的看板娘
- 股权转让项目:沈阳派尔化学有限公司55%股权转让
- 2023年出入境政策-喜忧参半
- 美团因拖欠骑手工资被约谈;传苹果6月6日举办全球开发者大会;Linux 5.18开始启动停止支持ReiserFS|极客头条
- 南繁水稻国家公园国稻种芯(三亚)水稻节功能性农业产业园
- 正在考虑写一本书《中国有所没有围墙的大学,影响了世界几千年》第一章请给个反响...
- 使用css定位--让foot层始终保持在页面底部
- 华为Mate50和小米13 参数对比
- 【C语言】计算一元二次方程的解
- 【转】开放性金融中的超流动性抵押链