认识HTTP请求

news2025/1/23 2:22:05

要分析HTTP请求和响应必然少不了抓包工具,关于抓包工具的设置和下载推荐看抓包工具Fiddler的下载与设置

通过抓包得到的一个HTTP请求

HTTP请求的格式

结构分析

        一.请求行

        

        1.post是方法,可以表示一条HTTP请求要进行的操作是什么,post通常表示该HTTP请求要向服务器发送一些数据

        我们常见的方法如下:

        其中get方法(HTTP请求的目的是向服务器获取资源)是HTTP请求中使用最多的,而post其次,其他的方法都很少使用

        get和post方法之间的区别

        两者最主要的区别就是:

        get将一些要发送给服务器的数据放到URL的选择字符串(query string)中,而post将要发送给服务器的数据放到请求正文(body)中。

        数据都是要传给服务器的,所有放在哪里没有实质上的区别,只是放到URL中用户能够看到(输入网址的时候能够看到),放到请求正文(body)中用户看不到而已

        但上传数据和登录的时候还是用post居多,因为在登录时要向服务器发送用户名和密码,要是直接放到URL的选择字符串(query string)中,用户能看到,会给用户一种不太安全的错觉(实际上是安全的,因为是密文传输,当要传输的数据较多时,要是直接放到URL中会显得URL特别的长,这样不好

        但其实这些都没有什么大不了的,数据放在哪里传输给服务器实际上都一样,因此可以认为 get和post方法没有本质上的区别,只是传输的数据放的位置不一样而已

        2.http://job.xjtu.edu.cn/companyLogin.do 是URL(统一资源定位符),这里明确描述出要访问的服务器是哪个,要访问的资源在服务器的哪个位置。

        关于URL推荐看认识 URL

        3.HTTP/1.1 表示HTTP请求的版本号

        二.请求报头(header)

                header的整体格式是键值对格式,每个键值对占一行,键和值之间采用冒号分隔,URL选择字符串中的键值对和请求正文(body)中的键值对完全是程序猿自定义的,而请求报头(header)中的键值对,主要是标准规定的(有哪些键,对应的取值有哪些都有规定),也可以有自定义的部分

请求报头(header)中键的种类很多,这里主要介绍几种常见的

        1.Host

        表示服务器主机的地址和端口

        2.Content-Length

        表示请求正文(body) 中的数据长度。如果没有请求正文(body),这个字段就可以没有,如果有请求正文(body),这个字段就必须有,要不然就是非法请求。

        为什么有请求正文(body)就必须要有Content-Length这个键呢?

        因为HTTP数据报是面向字节流的数据,所以存在粘包问题。关于粘包问题推荐看粘包问题(TCP面向字节流批量发送数据导致)

        当浏览器连续给服务器发送多条HTTP请求时,服务器如何区分从哪里到哪里是一条完整的HTTP请求呢?

        当没有请求正文(body)时,就可以用请求报头(header)后的空行作为这条HTTP请求的结束标记

        当有请求正文(body)时,就需要知道请求正文(body)的长度,推算出这条HTTP请求的结束位置

        这样才能避免发送粘包问题(无法区分从哪里到哪里是一条完整的HTTP数据报)

        3.Content-Type

        表示请求正文(body)的数据格式

常见的取值有:

        4.User-Agent

        表示当前客户端浏览器和操作系统的版本

        以前的时候这个属性比较有用,因为当时电脑没普及,导致电脑之间的性能差异较大,网站的一些功能在差的电脑上运行不起来,所以服务器需要知道客户端浏览器和操作系统的版本,对应发送客户端能够运行的HTTP数据

        5.Referer

        表示这个页面是从哪个页面跳转过来的(广告商可以通过这个属性知道用户是通过哪个广告平台跳转过来的,就可以付给广告平台对应的广告费)

        6.Cookie

        浏览器保存网站的临时数据会保存到Cookie中,Cookie中的数据保存在浏览器所处硬盘的空间

        Cookie的内容很多,可以通过下面的问答方式了解

        1.Cookie中的数据从哪里来?

        Cookie中的数据是服务器返回给浏览器的,浏览器在将数据保存到Cookie中

        2.Cookie保存在哪里?

        Cookie保存在浏览器所在电脑的硬盘上,每个域名都有自己的一组Cookie

        3.Cookie里的内容是啥?

        Cookie中的内容都是键值对结构的数据,这里的键值对都是程序员自定义的,其中往往会有一个键值对,作为用户的身份标识

        4.Cookie中的内容到哪里去?

        后续再访问这个网站中的各个页面,就会在HTTP请求中带上Cookie,服务器就进一步知道了客户端的详细情况

        Cookie往往会有一个很重要的键值对,是用来表示用户的身份信息的

        这是Cookie典型的使用场景

        首次访问网站,登陆成功以后,网站返回的HTTP数据报中就会包含用户的身份信息,浏览器就会将用户的身份信息保存到Cookie中,同时网站也会在服务器中创建出一个对应的Session(用户的档案)

        服务器的用户肯定不止一个,每个用户都有自己的Session(用户的档案),并且他们的SessionID各不相同,服务器就会使用类似于hash表的方式,以SessionID为key,Session为Value,将所有的数据组织起来

        后续访问网站的其他页面时,都会在请求的HTTP数据报的Cookie字段中,带上用户的SessionID(身份标识),服务器就可以根据SessionID找到对应的用户信息,返回用户所需要的HTTP数据报(此时服务器已经知道了客户的身份,就可以向客户发送需要的HTTP数据报,相当于登录网站后,去访问网站的其他页面,都不需要输入用户名和密码了,因为此时访问其他页面时发送的HTTP请求数据报的Cookie属性中包含了用户的信息)

        浏览器要保存数据为什么要保存到Cookie中?直接写入一个文件,放到硬盘中不行吗?

        这件事情是不行的

        因为要是浏览器可以直接保存数据到硬盘中的话,就相当于可以让网页轻易的访问到你的文件系统,网页要是向系统发送以下病毒的话,后果不堪设想

        所以,为了保证安全,浏览器会对网页的功能做出限制(禁止访问硬盘就是其中一个限制)

        为了保证安全,同时又能存储数据,浏览器就提供了Cookie功能

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

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

相关文章

使用终端MobaXterm连接Centos

1. 下载MobaXterm 官网: https://mobaxterm.mobatek.net/download.html 2. MobaXterm连接Linux 1 、查看刚才安装的 Linux 的 IP 地址 2、连接 3. Linux自带了JRE 由于javac指令不能运行,所以Linux只自带了JRE!!!

【C++】- set和map的具体使用(multiset和multimap的介绍)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

error:Failed building wheel for XXX

解决方案适用于大多数的pip 安装时出现的Failed building wheel for XXX 出现问题 按以往快速安装包的经验,第一反应当然是使用简单又快捷的terminal命令加上镜像,如下: pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple结…

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程 一、群晖套件中下载Cloud Sync 二、同步到百度云盘 打开Cloud Sync,点击左上角的号,云供应商选择百度云。 这里可以选择双向备份,也可以只上穿到百度云的仅上传本地更改。因为百…

D盘无法格式化?3个方法!轻松解决问题!

“我的电脑d盘好像中病毒了,我想将它格式化但是每次操作都显示d盘无法格式化。这是为什么呢?我应该怎么解决?” 有时候,我们的电脑可能会出现一些问题,导致我们不得不将某些磁盘进行格式化操作。这时候问题就出现了。有…

CSP 202005-1 重复局面

题目背景 国际象棋在对局时,同一局面连续或间断出现3次或3次以上,可由任意一方提出和棋。 问题描述 国际象棋每一个局面可以用大小为 的字符数组来表示,其中每一位对应棋盘上的一个格子。六种棋子王、后、车、象、马、兵分别用字母 k、q、…

Polarion导入需求(Word)

简介 将需求文档导入Polarion并实现自动创建工作项具有多个优势,这些优势有助于提高项目管理和协作的效率,以下是一些主要的优势点:减少手动工作: 自动创建工作项可以显著减少手动数据输入的工作量。不再需要手动逐一创建每个工作…

聚类-kmeans

聚类算法是无监督学习算法,指定将数据分成k个簇。然后通过每个点到各个簇的中心的欧氏距离来分类。 kmeans本身会陷入局部最小值的状况,二分kmeans可以解决这一点。 二分kmeans是遍历所有的簇,将其分成2个,比较哪一个分裂结果更…

2023年7月京东休闲食品行业品牌销售排行榜(京东大数据)

鲸参谋监测的京东平台7月份休闲食品市场销售数据已出炉! 根据鲸参谋平台的数据显示,7月份休闲食品市场整体呈现下滑趋势。当月休闲食品在京东平台的销量为3400万,环比下降约26%,同比下降约26%;销售额将近11亿&#xf…

Equall Apple 的革命性变压器:一个宽幅前馈,实现前所未有的效率和精度

变压器架构已显示出显著的可扩展性,从而大大提高了精度。然而,这种进步是以极高的计算要求为代价的,这已成为实际应用中的重大障碍。 尽管研究人员一直在积极寻求解决方案来减小变压器组件的尺寸并修剪注意力头等元素,但另一个关…

自动化测试01

测试脚本编写参考 selenium IDE 插件,firefox浏览器搜索安装,(无法安装) katalon recorder 负责输出脚本,输出模式,python2unitest , 无法输出python3类型脚本,仅参考 开发者工具 …

Ubuntu安装Android Studio

一、Android Studio安装 官方教程:安装 Android Studio | Android Developers 1、下载:Download Android Studio & App Tools - Android Developers,选择linux版本 2、 提取/解压 将下载的安装包提取出来 3、 64位ubuntu系统&#…

三分钟创建扫码查分系统

学生考试的成绩是家长和学生关注的重要问题。传统的成绩查询方式往往需要将整个成绩表格发到群里,不仅操作繁琐,而且可能导致信息泄露。为了解决这个问题,易查分应运而生。易查分是一个可以将Excel表格转换为在线查询的工具,可以轻…

Python——操作MySQL数据库

😊Python——操作MySQL数据库 🚀前言🔍数据库编程🍭数据库编程基本介绍🍭数据库编程接口🍭什么情况下会使用Python操作MySQL数据库?🍭Java和Python操作MySQL数据库有何不同&#xff…

基于Python开发的AI智能联系人管理程序(源码+可执行程序+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的AI智能联系人管理程序,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含:项目源码、项目文档等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#…

我的个人网站——宏夏Coding上线啦

网站地址:宏夏Coding Github地址:🔥🔥宏夏coding网站,致力于为编程学习者、互联网求职者提供最需要的内容!网站内容包括求职秘籍,葵花宝典(学习笔记),资源推…

核心实验18_ospf高级_ENSP

项目场景: 核心实验18_ospf高级_ENSP 多区域虚链路 实搭拓扑图: 具体操作: R1: [R1]ospf 1 router-id 1.1.1.1 [R1-ospf-1]area 0 [R1-ospf-1-area-0.0.0.0]net 1.1.1.0 0.0.0.255 [R1-ospf-1-area-0.0.0.0]net 10.1.12.0 0.0.0.255 [R1-os…

苹果电脑显示器校准推荐 BetterDisplay Pro for Mac

BetterDisplay Pro是一款Mac平台上的显示器校准软件,可以帮助用户调整显示器的颜色和亮度,以获得更加真实、清晰和舒适的视觉体验。 以下是BetterDisplay Pro的主要特点: - 显示器校准:可以根据不同的需求和环境条件调整显示器的颜…

车载多通道语音识别挑战赛(ICMC-ASR)丨ICASSP2024

由希尔贝壳、理想汽车、西工大音频语音与语言处理研究组、新加坡南洋理工大学、天津大学、WeNet开源社区、微软、中国信通院等单位发起的“车载多通道语音识别挑战赛”(ICMC-ASR)将作为IEEE声学、语音与信号处理国际会议(ICASSP2024&#xff…

随机数问题

你知道 C 中的 rand() 函数是怎么实现的吗?你知道怎么在一维 / 二维 / 三维空间中等可能地随机取点吗? 随机数是一系列看似无规律、无法预测的数字或值的序列,其产生过程具有一定程度的不确定性。在计算机中,真正的绝对随机数是很…