万字详解HTTP协议面试必备技能

news2024/11/24 10:56:54

目录

一、HTTP 是什么

二、理解 "应用层协议"

2.1理解 HTTP 协议的工作过程

2.2HTTP 协议格式

2.3抓包工具的使用

2.4抓包工具的原理

2.5抓包结果

2.5.1HTTP请求

2.5.2HTTP响应

2.6协议格式总结

三、HTTP 请求 (Request)

3.1认识 URL

3.1.1URL 基本格式

3.1.2关于 URL encode

3.2认识 "方法" (method)

3.2.1 GET 方法

3.2.1.1使用 Fiddler 观察 GET 请求

3.2.2POST 方法

3.2.2.1使用 Fiddler 观察 POST 方法

3.3认识请求 "报头" (header)

3.3.1Host

3.3.2Content-Length

3.3.3Content-Type

3.4User-Agent (简称 UA)

3.4.1Referer

3.4.2Cookie

3.4.3理解登陆过程

3.5认识请求 "正文" (body)

四、HTTP 响应详解

4.1认识 "状态码" (status code)

4.1.1  200 OK

4.1.2  404 Not Found

4.1.3  403 Forbidden 

4.1.4  405 Method Not Allowed

4.1.5  500 Internal Server Error

4.1.6  504 Gateway Timeout

4.1.7  302 Move temporarily

4.1.8  301 Moved Permanently

 4.1.9状态码小结

五、认识响应 "报头" (header)

5.1Content-Type

六、认识响应 "正文" (body)

6.1 text/html

6.2text/css

6.3application/javascript

6.4application/json

七、通过 form 表单构造 HTTP 请求

7.1form 发送 GET 请求

7.1.1构造的 HTTP 请求

7.1.2体会 form 代码和 HTTP 请求之间的对应关系

7.2form 发送 POST 请求

7.2.1构造的 HTTP 请求

八、通过 ajax 构造 HTTP 请求

8.1发送 GET 请求

8.1.1浏览器和服务器交互过程(引入 ajax 后)

8.2发送 POST 请求

8.2.1发送 application/x-www-form-urlencoded 数据 (数据格式同 form 的 post)

8.2.2发送 application/json 数据

8.3封装 ajax 方法

8.4附录: ajax 测试服务器代码 (后面再讲解)

8.5通过 Java socket 构造 HTTP 请求

九、HTTPS

9.1HTTPS 是什么

9.1.1臭名昭著的 "运营商劫持"

十、"加密" 是什么

十一、HTTPS 的工作过程

11.1引入对称加密

11.2引入非对称加密

11.3引入证书

11.3.1查看浏览器的受信任证书发布机构

11.4完整流程

11.5总结


一、HTTP 是什么

HTTP (全称为 "超文本传输协议") 是一种应用非常广泛的 应用层协议.

HTTP 诞生与1991年. 目前已经发展为最主流使用的一种应用层协议.

最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了.

HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP实现)目前我们主要使用的还是 HTTP1.1 和 HTTP2.0

我们平时打开一个网站, 就是通过 HTTP 协议来传输数据的.

当我们在浏览器中输入一个 搜狗搜索的 "网址" (URL) 时, 浏览器就给搜狗的服务器发送了一个 HTTP 请求, 搜狗的服务器返回了一个 HTTP 响应.
这个响应结果被浏览器解析之后, 就展示成我们看到的页面内容. (这个过程中浏览器可能会给服务器发送多个 HTTP 请求, 服务器会对应返回多个响应, 这些响应里就包含了页面 HTML, CSS, JavaScript, 图片, 字体等信息).

所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些其他的资源, 比如图片, 视频, 音频等二进制的数据.

二、理解 "应用层协议"

我们已经学过TCP/IP , 已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程
[ IP+Port ].可是,仅仅把数据从A点传送到B点就完了吗?


这就好比,在淘宝上买了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1067572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter 多实例压测

Apache JMeter 是一个开源的 Java 应用程序,用于性能测试和负载测试。它最初是为测试 Web 应用程序而创建的,但现在已广泛用于测试各种不同类型的应用程序,包括数据库、消息队列、FTP 服务器等。JMeter 提供了丰富的功能,使您能够…

行内元素文字背景被截断的问题,如何进行修改?

1.问题如图所示 这里背景是被截断的&#xff0c;有什么css样式可以修改它呢&#xff1f; 效果实现如图&#xff1a; 不一样的地方在于这里的截断位置是引用了开头和结尾的位置。 如何实现&#xff1f; <!DOCTYPE html> <html lang"en"> <head><…

终于找到了!Jenkins最全最详细入门指南

目录 一、介绍 二、功能 三、搭建Jenkins目的 四、安装 五、Jenkins的三大概念 六、创建job & 配置git 七、构建触发器&#xff08;build triggers&#xff09; 八、运行python脚本 九、测试报告展示 十、配置邮件并发送 最后 一、介绍 Jenkins是开源的,使用Java编…

Linux系统部署PostgreSQL 单机数据库

安装方式 1 安装包方式 &#xff08;Packages and Installers&#xff09; 支持的操作系统包括 liunxMacosWindowsBSDSolaris 2 源码安装 &#xff08;Source code&#xff09; 下载源码包 通过下载地址PostgreSQL: File Browser 可以看到有各个版本的源码目录 选择13.1…

二维离散傅里叶变换的实现

二维离散傅里叶变换的实现 1.使用Python包实现2.使用c实现2.1 FFTW库安装2.2 结果比较 参考文献 1.使用Python包实现 import numpy as np import matplotlib.pyplot as plt anp.array([0, 2, 4, 1,6, 1, 3, 2,5]).reshape(3,3) fnp.fft.fft2(a) fshiftnp.fft.fftshift(f) mag…

CSS圆角大杀器,使用滤镜构建圆角及波浪效果

目录 1&#xff0c;border-radius实现圆角2&#xff0c;filter: contrast() 配合 filter: blur() 实现圆角3&#xff0c;使用 filter: contrast() 配合 filter: blur() 实现波浪效果 1&#xff0c;border-radius实现圆角 通常我们加个 border-radius就可实现一个div盒子的圆角…

分页查询(关键词: limit)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 比如现在有一张表emp有15条数据 我想每页只显示5条数据,分3页,这样看起来简捷一些,我该怎么实现呢 语法格式: select */列名 from 表名 limit 初…

CMAKE使用记录

CMAKE使用记录 CMake简化了针对同一项目的不同平台、不同编译器的构建过程和编译过程&#xff0c;能够管理各种规模的项目。 CMAKE命令记录 cmake命令说明 语法&#xff1a; # cmake构建项目的编译系统 Generate a Project Buildsystem > cmake [<options>] -B &…

85.最大矩形

单调栈&#xff0c;时间复杂度o(mn)&#xff0c;空间复杂度o(mn) class Solution { public:int maximalRectangle(vector<vector<char>>& matrix) {int mmatrix.size();if(m0){return 0;}int nmatrix[0].size();//记录矩阵中每个元素左边连续1的数量vector<…

如何开发一款高效便捷的搬家服务小程序

随着互联网的发展&#xff0c;小程序已成为各行各业重要的业务推广和用户服务平台。对于搬家行业而言&#xff0c;开发一款高效便捷的搬家服务小程序具有巨大的市场潜力。本文将为您详细介绍如何开发一款这样的搬家服务小程序。 一、进入乔拓云网后台 在开始制作搬家服务小程序…

番外项目---Vim编辑器

Task01: 1.在/tmp目录下建立一个名为mytest的目录&#xff0c;进入mytest目录当中; 2.将/etc/man_db.conf复制到上述目录下面&#xff0c;使用vim打开目录下的man_db.conf文件; 3.在vim中设定行号&#xff0c;移动到第58行&#xff0c;向右移动15个字符&#xff0c;请问你看到…

文件丢失怎么找回?收藏好这3个方法!

“我真的要哭了&#xff0c;不小心把一些很重要的文件弄丢了&#xff0c;现在不知道该怎么办了&#xff0c;有没有什么方法可以把这些文件找回来呀&#xff1f;大家快帮帮我吧&#xff01;” 在日常办公中&#xff0c;很多用户都会习惯性的把一些重要的文件和数据保存在电脑上。…

UE4游戏客户端开发进阶学习指南

前言 两年多前写过一篇入门指南&#xff0c;教大家在短时间内快速入门UE4的使用&#xff0c;在知乎被很多人收藏了。如今鸡佬使用UE快三年了&#xff0c;是时候更新一下进阶版本的学习指南。本文对于读者的要求&#xff1a; 有一定的C基础已经入门UE&#xff0c;能够用蓝图和…

AD 域控使用回收站批量还原用户

一、Read me. 测试版本winserver 2019&#xff0c;其余版本请查阅文档或者实际操作尝试。 前提需要预先开启回收站功能&#xff01;&#xff01;&#xff01;&#xff01; 没有开启可以点&#xff0c;开启后则变灰色。 如果是人为操作并且没有开启这个功能&#xff0c;那么不…

【算法训练-数组 四】【数组合并】:合并两个有序数组

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【数组组合】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

【小黑送书—第三期】>>《深入浅出SSD》

近年来国家大力支持半导体行业&#xff0c;鼓励自主创新&#xff0c;中国SSD技术和产业良性发展&#xff0c;产业链在不断完善&#xff0c;与国际厂商的差距逐渐缩小。但从行业发展趋势来看&#xff0c;SSD相关技术仍有大幅进步的空间&#xff0c;SSD相关技术也确实在不断前进。…

localhost和127.0.0.1都可以访问项目,但是本地的外网IP不能访问

使用localhost和127.0.0.1都可以访问接口&#xff0c;比如&#xff1a; http://localhost:8080/zhgl/login/login-fy-list或者 http://127.0.0.1:8080/zhgl/login/login-fy-list返回json {"_code":10000,"_msg":"Success","_data":…

数据结构与算法-循环链表、双向链表

我们这里接着上一篇单链表继续往下深入学习循环链表、双向链表。 链表 &#x1f388;3.循环链表&#x1f52d;3.1循环链表的概念&#x1f52d;3.2循环链表的基本操作&#x1f50e;3.2.1创建空表&#x1f50e;3.2.2插入操作&#x1f50e;3.2.3删除操作 &#x1f388;4.双向链表&…

图的存储-链式前向星

链式前向星 链式前向星是民间OI选手发明的数据结构。用另一个词解释它就是&#xff1a;用数组模拟的邻接链表。最核心的思想就是用数组模拟链表。 &#xff08;1&#xff09;前向星 前向星就是边的集合。一个图&#xff0c;只要将它的所有边存储起来&#xff0c;就能知道它的…

为什么append到父节点后的子节点发生修改,父节点打印出来的也会变化

今天走查前端代码&#xff0c;发现历史代码写出来的不规范&#xff0c;但是他还是在生产运行了很久的代码&#xff0c;仔细思量后发现&#xff0c;其实原理是对的&#xff0c;只是看起来不美观&#xff0c;不易读而已。 废话不说&#xff0c;先上demo代码 <!DOCTYPE html&g…