目录

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协议学习相关推荐

  1. 《惢客创业日记》2020.07.08(周三)给三剑客取名

    今天的我,心态多少有点小崩溃,多项工作都遇到了阻力,首先是规划惢客电商的应用场景时,发现之前规划的很多页面在产品逻辑上都行不通,估计要面临着多个页面的返工. 其次是针对惢客免打扰中的防骚扰版块与另一个 ...

  2. 2020.07 学习日记

    废话 寒假到现在,在家里玩了5个月,来学校又玩了大半个月.以为会做点东西了就什么都懂了,竟然没做准备就投了字节秋招提前批.结果被挂了之后,又被捞起来面试.可以说十分幸运了,但机会都是留给有准备的人 2 ...

  3. 第十弹:网络公开课,免费学习资源,2020.07.05更新

    第十弹:网络公开课,免费学习资源,2020.07.05更新 按照个人兴趣整理的网络公开课资源导航网址:http://www.trochilidaetechnology.com/ 以下为[网络公开课]领 ...

  4. 【计算机网络学习笔记07】PPP协议、IP编址、NAT技术

    [计算机网络学习笔记07]PPP协议.IP编址.NAT技术 一.PPP协议 是TCP/IP网络中最重要的点到点的数据链路层协议. 1 PPP协议的组成 1)链路控制协议:建立并维护数据链路连接(身份验 ...

  5. 信奥中的数学 相关资料汇总(2022.07.08)

    信奥中的数学 数论篇 相关资料汇总(2022.07.07) 信奥中的数学 数论篇 相关资料汇总(2022.07.07)_dllglvzhenfeng的博客-CSDN博客 信奥中的数学 组合篇 相关资料 ...

  6. Bluetooth协议学习

    蓝牙协议学习 背景知识 蓝牙(Bluetooth)是一个短距离无线传输的技术,工作在免证的ISM频段.最初名字为Wibree,在90年代由Nokia设计开发,随后转交给蓝牙特别兴趣小组(SIG)专门维 ...

  7. http协议学习系列

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  8. Python每日一学 08——get()方法学习

    Python每日一学 08--get()方法学习 文章目录 Python每日一学 08--get()方法学习 一.前言 二.题目 1.莫尔斯电码转换 2.凯撒密码加密 3.缩写月份单词 4.本月天数 ...

  9. 学习前端和后端必学之HTTP协议学习

    1.HTTP协议学习目标: (1).调试AJAX应用"看不见摸不着"的错误 (2).进行Web访问优化---高阶面试题 2.面试题:浏览器中输入www.taobao.com直到看到 ...

  10. ModbusTCP协议学习

    ModbusTCP协议学习 文章目录 ModbusTCP协议学习 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 2.2.1.功能码 2.2.2.PDU详细结构 ...

最新文章

  1. apache2.2.21 + php5.3.8 + mysql5.5配置
  2. Struts2的Stack Context和ValueStack
  3. amazeui学习笔记一(开始使用4)--Web App 相关
  4. linux phpunit 安装,在CentOS 7/CentOS 8系统中安装PHPUnit的方法
  5. 每个人都应有自己的作品
  6. php ftp上传文件 源码,PHP FTP上传文件
  7. 操作系统——Windows 控制台命令
  8. c语言超市收银台程序,超市收银电脑操作流程
  9. 安卓和win环境下扫描局域网下设备IP的工具
  10. 国产哈希算法WJLHA(六):自定义哈希长度的WJLHA3开源(JAVASCRIPT)
  11. 搜狐新闻文本分类数据集
  12. Nginx 301重定向域名
  13. SQL Developer 19.2.1下载安装
  14. 4P和4C的物理学分析
  15. js跳转页面与打开新窗口的代码
  16. LeetCode刷题(37)~无重复字符的最长子串
  17. 什么是红股什么是转增股
  18. Python:摘苹果
  19. java yyyymmddhhmm check_java8时间 yyyyMMddHHmmss格式转为日期的代码
  20. PDF文件JAVA去水印源码,java pdf增加水印示例源码

热门文章

  1. live2d_二次元 | live2d为你的网站博客增加萌萌哒的看板娘
  2. 股权转让项目:沈阳派尔化学有限公司55%股权转让
  3. 2023年出入境政策-喜忧参半
  4. 美团因拖欠骑手工资被约谈;传苹果6月6日举办全球开发者大会;Linux 5.18开始启动停止支持ReiserFS|极客头条
  5. 南繁水稻国家公园国稻种芯(三亚)水稻节功能性农业产业园
  6. 正在考虑写一本书《中国有所没有围墙的大学,影响了世界几千年》第一章请给个反响...
  7. 使用css定位--让foot层始终保持在页面底部
  8. 华为Mate50和小米13 参数对比
  9. 【C语言】计算一元二次方程的解
  10. 【转】开放性金融中的超流动性抵押链