江西网站设计电话/百度关键词推广多少钱
目录
什么是http?
http的工作原理:
抓包工具
fiddler的使用
HTTP请求数据:
1.首行:编辑
2.请求头(header)
3.空行:
4.正文(body)
HTTP响应数据
1.首行:编辑
2.响应头
3.空行:
4.响应正文(body)
请求首行:
URL:
URLencode:
方法(method):
1.GET方法:常用于获取服务器上的某个资源。
2.POST方法:多用于提交用户输入的数据给服务器。
GET和POST的区别:
还有一些描述关于GET和POST的区别,但都不是很准确:
请求头(header)内容:
1.host:编辑
2.Content-Length,Content-Type
3.User-Agent(UA)
4.referer
5.Cookie
状态码:
常见的状态码:
构造HTTP请求工具:
Postman
什么是http?
http是"超文本传输协议",是应用层的协议。
(文本,就是字符串,能在utf8/gbk表中找到的合法字符,超文本就是不仅是字符串,还包含图片,视频,音频等,html就是超文本;还有富文本格式,就是类似于word,可以设置字体大小,行间距等)
HTTP诞⽣与1991年.⽬前已经发展为最主流使⽤的⼀种应⽤层协议.HTTP协议是基于TCP实现的。
http发展至今,已经有了好多个版本,已经到了http 3.0,但目前主推的还是http 1.0
2.0之前的版本是基于TCP实现的,3.0是基于UDP实现的,
2.0和3.0版本引入了很对新的特性,对传输效率和安全性都做了提高。
http的工作原理:
我们平时打开一个网站,就是通过http协议来传输数据的。
http最常见的应用场景就是 网站,浏览器和服务器之间的数据传送,客户端和服务器之间传送数据。
http请求:指要访问哪个网页
http响应:返回指定网页,(这里的网页是通过HTML来实现的)
当我们在浏览器中输⼊⼀个搜狗搜索的"⽹址"(URL)时,浏览器就给搜狗的服务器发送了⼀个HTTP请求,搜狗的服务器返回了⼀个HTTP响应.这个响应结果被浏览器解析之后,就展⽰成我们看到的⻚⾯内容.(这个过程中浏览器可能会给服务器发 送多个HTTP请求,服务器会对应返回多个响应,这些响应⾥就包含了⻚⾯HTML,CSS,JavaScript,图 ⽚,字体等信息).
http是典型的“一问一答”类型。
抓包工具
抓包工具就是一些"代理程序",通过捕获网络上传输的数据,并显示出来,给程序员一些参考.
fiddler专注于对http的转包,下载地址:
Download Fiddler Web Debugging Tool for Free by Telerik
可以选择classic版本,是免费的
首次下载需要填一些信息,填完之后就可以下载了,安装也和简单,一直next就可以了.
下载之后,要简单设置一下:
1.先打开fiddler,
点击tools
点击options
选择https,将里面的都给勾选上,第一次勾选时,会弹出来一个"是否安装证书",选择 是.
此外,有的电脑上带有/下载的 代理程序(浏览器插件/单独的程序),需要关闭电脑上的代理程序.fiddler也是一个代理,可能会产生冲突.
(打开fiddler后,可能会出现浏览器卡顿或者打不开的情况,关闭fidller就可以了)
fiddler的使用
配置完成之后,就能看到fiddler上抓到很多程序的数据包.
电脑上还有很多感知不到的程序在背后操作,fiddler都能抓到,并显示出来.
打开一个百度界面,在fiddler中就能被抓到
双击百度,在右侧就会出现两个框
上面是请求框,下面是响应框,选择raw,raw里是http请求/响应的原始数据.
若在这里看着内容比较小,在右下角,有一个View in Noteoad,点击后,可以在记事本中查看:
在记事本中打开:
响应的raw也可以在记事本中打开,但能看到,有的响应数据是乱码,
乱码是响应数据被压缩了(为了节省带宽),进行解压就可以了.
可以通过点击:Responsebody is encoded.Click to decode来解压:
HTTP请求数据:
1.首行:
方法(method) ;
url(网址) ;
版本号 .
这三个部分使用 空格 进行分隔
2.请求头(header)
请求头包含从第二行到最后一行,包含了一些键值对,每个键值对占一行,键和值之间用:和空格进行分隔。这些键值对类似以TCP的报头,包含了一些重要的连接信息。
3.空行:
请求头下面有一行空行,表示请求头结束标记。
4.正文(body)
HTTP的载荷部分,有的http请求有正,有的没有正文
HTTP响应数据
1.首行:
包含三部分,分别是:版本号 状态码 状态码描述,用空格分开
2.响应头
响应头是从第二行到一个空行,也是由一些键值对构成,每个键值对占一行,键和值之间用:和空格分隔。
3.空行:
响应头结束标志。
4.响应正文(body)
HTTP的载荷部分,响应的载荷是html。
请求首行:
URL:
URL描述一个网络上的资源位置,是唯一的资源定位符。
一个url的完整结构:
协议方案名:HTTP
登录信息:用户名,密码...,(写在这里不是很安全,现在都是通过网页来登录认证).
服务器地址:域名,IP协议
端口号:要访问的端口号,若url中没有带端口号,浏览器会给一个默认的服务器端口号,并不是系统随机分配的,
文件路径:网络上的资源位置,
查询字符串(query string):
这是一个百度的网址url,
URLencode:
在url中存在很多有特殊意义符号,有? / : & .....,查询字符串(query string )是一些自定义的键值对,
这些键值对的内容中也有可能涉及到这些符号,若直接写进去,就有可能解析失败,因此需要对特定符号(包括汉字)进行转义,将特殊字符对照ascii码表进行转义,再通过%进行分隔.
通过百度搜索鲜花:
鲜花对应ascii码表的16进制就是 E9 B2 9C E8 8A B1,
方法(method):
位于首行中的第一部分,用来描述这次请求的目的,要干什么。
有这些类型:
1.GET方法:常用于获取服务器上的某个资源。
GET方法非常常见。
fiddler抓包得到的一条:
这条数据包对应的请求数据:
2.POST方法:多用于提交用户输入的数据给服务器。
常用于登录和上传。
这是一条登录功能的数据包:
对应的请求数据:
GET方法通常没有body部分,POST有body部分,GET方法一般会把需要传送非服务器的补充信息放到URL中,通过query String传递,POST中的query string一般为空,将数据放到body中,通过body传递.
这是POST中的body部分,是JSON格式的数据,使用的是base64编码的方式,
base编码一般带有一个"==",使用四个字节代,对原来的三个字节进行重新编码.
这是为了原始数据中的二进制内容,因为有些场合只能存储文本文件.
base64编码的编码规则 有标准版,也有自定义版.标准版就属于明文传输,属于透明的,无法作为加密方法,自定义版就可以自己约定编码规则,进行加密操作.
GET和POST最常用,别的用的比较少,虽然对上面的这些方法的使用有一各自的说明,但这些规定都属于标准文档创作者的"一厢情愿",开发者在实际开发程序的时候,他们都是可以相互使用的。
GET和POST的区别:
GET和POST本质上是没有区别的,使用GET的场景可以替换成POST,使用POST的场景也可以替换成GET;这些都取决于代码实现时是怎样写的。
但GET和POST在使用习惯上有一些不同:
1.GET的body一般为空,更习惯把数据放到URL的query String中;POST的URL的query String一般为空,更多把数据放到body中。
(当然,这两个的存放方式通常是可以交换位置的,GET也可以将数据放到body中,POST也可以将数据放到URL中)
2.语义上:在标准文档中,GET的语义是用来获取数据;POST的语义是用来给服务器传输数据。
3.幂等性:在表针文档中,建议GET请求实现幂等的;POST没有要求。
幂等性指的是:若每次输入的内容一样,返回的结果是一样的,则是幂等的;
若每次输入的内容一样,返回的结果不是一样的,则不是幂等的。
4.GET请求可以被浏览器收藏夹收藏,POST请求不能。
还有一些描述关于GET和POST的区别,但都不是很准确:
1.POST比GET更安全:
因为在登录的时候,GET的信息是在URL中,能直接在屏幕上看到,但POST是在body中,无法直接看到。
这是不准确的,因为POST的即时是在body中,使用抓包工具,同样也能获取到数据,要想让数据安全,最根本的是对数据加密。
2.POST比GET存储的数据更多:
这是在之前的时候,现在没有这一区别了,GET的数据存储是在URL中,之前URL的长度有限制,现在没有了。
3.GET只能携带文本数据,POST只能携带二进制数据:
GET通过URL的query String携带数据,query String确实只能携带文本数据,但可以将二进制数据通过urlencode转换成文本数据来实现存储数据,到服务器在进行urlencode,转换成二进制文件就可以了;
POST将数据存放到body中,body部分不是只是二进制数据的,也可以存放别的数据。
请求头(header):
请求头,就相当于报头,有很多 键值对 组成,下面是一些常见的键值对:
1.host:
表示服务器主机的地址和端口.大部分情况下和url中的地址和端口是一样的,少数会有不同,
2.Content-Length,Content-Type
Content-Length: 表示body中的数据长度,
Content-type: 表示body中的数据格式,
若数据包中没有body部分,在请求头中也就没有这两个键值对了.
HTTP的底层是TCP,Content-Length用来解决数据的粘包问题,
body中可以有很多种数据格式,程序员也可以自己任意定义格式,就要通过Content-type来确定,
有一些常见的请求数据格式:
application/json:body 就是JSON
application/x-www-form-urlencoded:
multipart/form-data:上传文件时使用的.
常见的响应数据格式:
1.text/plain: 纯文本格式
2.text.html: html 格式
3.text/css: css格式
4.application/javascript: js格式
5.image/png: 图片
6.image/jpd: 音频
在fiddler中,抓到的包中可以看到,有一些是灰色的,表示是在本地机器硬盘的缓存中,
当主机发出请求时,浏览器和服务器之间要进行多次的网络交互,整体的效率是比较低的.
为了提升交互效率,会在首次访问的时候,将一些不变的内容在浏览器本地的机器硬盘中进行缓存;当再次访问时,直接从缓存中读取就可以了,减少了网络交互的开销.
若想让浏览器不从缓存中读取,直接从服务器中获取,点击下面这个,然后按ctrl+f5,就能重新获取数据了.
3.User-Agent(UA)
表示浏览器/操作系统的信息/属性.
:这一部分表示操作系统的信息,
:这些是多个浏览器的信息.
浏览器的信息和操作系统的信息描述了用户使用什么样的设备上网,
对于浏览器新老特性的兼容,设备的不同,呈现的页面的格式的差异,通过UA都能很好的解决,
4.referer
描述当前页面从哪个页面跳转过来的.
早期的referer是可以被随意修改的,现在使用的https都进行了SSL加密,就很难被他人修改了.
5.Cookie
保存了一些 报头中的重要属性.
Cookie本质上是一个浏览器本地持久化保存数据(存储在硬盘中)的机制.
Cookie的用途:用来保存客户端的数据
主要是用来保存客户端的身份标识,方便服务端通过身份标识来区分用户.(其他的数据信息一般不会保存到Cookie中,Cookie是随时可以删掉的)
Cookie的来源:服务器首次访问/登录成功浏览器后,返回给浏览器的.
Cookie的去向:Cookie会保存在浏览器本地本机的硬盘中,后续每次访问服务器都会带上Cookie; 不同的客户端,保存的Cookie是不同的,就算相同的客户端,访问不同的浏览器,Cookie也是不同的.
Cookie的内容: 键值对格式的数据,由程序员自定义
不同网站的Cookie是不相同的.
Cookie在浏览器中的组织形式:在本地的硬盘保存,按照不同域名为维度分别存储
状态码:
状态码存在响应中,用来表示响应的结果.
http中的状态码都是标准约定好的,
常见的状态码:
常见的几个状态码:
200 OK : 表示成功!
404 Not Found: 表示要访问的资源没找到.
在gitee中,当要访问abc.html时,就会显示这样的页面,表示要访问的资源没有找到。
405 Method Not Allowed: 表示你的服务器只支持GET请求,但你发送的是POST请求.
500 Internal Server Error: 服务器内部错误.
504 GateWay Timeout:访问服务器超时
301:永久重定向
302:临时重定向
要访问网站A,访问A之后,浏览器自动跳转到了网站B.
一般用于某个网站,发布使用了很长时间,想要修改域名,但可能有很多用户已经保存了原网站的域名在收藏夹中了,若突然修改,原来的域名就没法用了,这样就降低了用户的使用观感.
为了不影响用户的使用,可以把访问老域名的请求定向到访问新域名的请求,当访问原来的网址时,就能顺利跳转到新的网址了.
若是永久重定向,浏览器会将重定向的结果记录下来,保存到浏览器本地的缓存中,下次再访问时,就没有跳转的步骤了,直接定向到新的网站中.
临时重定向就无法缓存了.
构造HTTP请求工具:
Postman
是一个经典的,广泛使用的工具.
相关文章:

javaEE-6.网络原理-http
目录 什么是http? http的工作原理: 抓包工具 fiddler的使用 HTTP请求数据: 1.首行:编辑 2.请求头(header) 3.空行: 4.正文(body) HTTP响应数据 1.首行:编辑 2.响应头 3.空行: 4.响应正文…...

【戒抖音系列】短视频戒除-1-对推荐算法进行干扰
如今推荐算法已经渗透到人们生活的方方面面,尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨,慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…...

9.建造者模式 (Builder Pattern)
定义 建造者模式(Builder Pattern)是一种创建型设计模式,旨在将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。该模式的核心思想是通过一步步地构建一个复杂的对象,每个步骤独立且可扩展&…...

OpenCV:特征检测总结
目录 一、什么是特征检测? 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT(尺度不变特征变换) 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…...

Clion开发STM32时使用stlink下载程序与Debug调试
一、下载程序 先创建一个文件夹: 命名:stlink.cfg 写入以下代码: # choose st-link/j-link/dap-link etc. #adapter driver cmsis-dap #transport select swdsource [find interface/stlink.cfg]transport select hla_swdsource [find target/stm32f4x.…...

电脑开机键一闪一闪打不开
家人们谁懂啊!本来打算愉快地开启游戏时光,或者高效处理工作任务,结果按下电脑开机键后,它就只是一闪一闪的,怎么都打不开。相信不少朋友都遭遇过这种令人崩溃的场景,满心的期待瞬间化为焦急与无奈。电脑在…...

深度学习 Pytorch 基础网络手动搭建与快速实现
为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…...

Sqli-labs靶场实录(一):Basic Challenges
sqli-labs靶场实录:Basic Challenges sql手注基本流程Less-11.1探测注入点1.2判断字段数1.3判断回显位1.4提取数据库基本信息1.5拖取敏感数据 Less-2Less-3Less-4Less5爆表爆列名 Less6爆库爆表爆列名 Less7猜解数据库长度逐字符爆破数据库名 Less8爆库 Less9爆库 Less10Less11…...

2024最新版Node.js详细安装教程(含npm配置淘宝最新镜像地址)
一:Node.js安装 浏览器中搜索Nodejs,或直接用网址:Node.js — 在任何地方运行 JavaScript 建议此处下载长期支持版本(红框内): 开始下载,完成后打开文件: 进入安装界面,在此处勾选,再点击n…...

RK3568使用QT搭建TCP服务器和客户端
文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…...

Android学习20 -- 手搓App2(Gradle)
1 前言 昨天写了一个完全手搓的:Android学习19 -- 手搓App-CSDN博客 后面谷歌说不要用aapt,d8这些来搞。其实不想弄Gradle的,不过想着既然开始了,就多看一些。之前写过一篇Gradle,不过是最简单的编译,不涉…...

LeetCode - Google 大模型10题 第2天 Position Embedding(位置编码) 3题
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145454489 在 Transformer 架构中,位置编码(Position Embedding) 是辅助模型理解序列中元素顺序的关键机制。绝对位置编码(Absolute P…...

PostgreSQL 数据库备份与还原
为了安全与数据共享等,创建好的数据库有时候需要备份操作和还原操作。数据库的备份与还原主要是三个命令:pg_dump、pg_dumpall 和 pg_restore 。 其中pg_dump用于备份单个数据库,它支持多种备份格式(SQL、自定义等)&a…...

proxmox通过更多的方式创建虚拟机
概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…...

WordPress使用(2)
上一篇文章讲述了WordPress的基本安装,主要是docker方式的处理。本文章主要介绍WordPress安装后的其他设置。 1. 安装后设置 安装后碰到的第一个需求就是安装一个合适的主题,但WordPress默认的上传文件大小是2M,远远无法满足要求࿰…...

git中文件的状态状态切换
文件的状态分类 Git 中文件的状态主要分为以下几种: Untracked(未跟踪) 定义:这些文件从未被 Git 跟踪过,通常是因为它们是新创建的文件,或者被 .gitignore 排除在外。 示例:新创建的文件 new…...

解决php8.3无法加载curl扩展
把它的值更改为扩展存在的目录的绝对路径(扩展存在的目录为有php_xxx.dll存在的目录) extension_dir "e:\serv\php83\ext" 然后从php根目录复制 libssh2.dll 和 libcrypto-*.dll 和 libssl-*.dll 到Apache根目录下的bin目录 重启apache服务即可...

三路排序算法
三路排序算法 引言 排序算法是计算机科学中基础且重要的算法之一。在数据分析和处理中,排序算法的效率直接影响着程序的执行速度和系统的稳定性。本文将深入探讨三路排序算法,包括其原理、实现和应用场景。 一、三路排序算法的原理 三路排序算法是一…...

入行FPGA设计工程师需要提前学习哪些内容?
FPGA作为一种灵活可编程的硬件平台,广泛应用于嵌入式系统、通信、数据处理等领域。很多人选择转行FPGA设计工程师,但对于新手来说,可能在学习过程中会遇到一些迷茫和困惑。为了帮助大家更好地准备,本文将详细介绍入行FPGA设计工程…...

DBASE DBF数据库文件解析
基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...

html基本结构和常见元素
html5文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文档标题</title> </head> <body>文档正文部分 </body> </html> html文档可分为文档头和文档体…...

JAVAweb学习日记(十) Mybatis入门操作
一、介绍 二、快速入门程序 三、入门-数据库连接池 四、入门-lombok工具包...

从Transformer到世界模型:AGI核心架构演进
文章目录 引言:架构革命推动AGI进化一、Transformer:重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律 二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破 三、构建…...

Rk3588芯片介绍(含数据手册)
芯片介绍:RK3588是一款低功耗,高性能的处理器,适用于基于arm的PC和边缘计算设备,个人移动互联网设备和其他数字多媒体应用,集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面:提供…...

java开发面试自我介绍模板_java面试自我介绍3篇
java 面试自我介绍 3 篇 java 面试自我介绍篇一: 我叫赵,我的同学更都喜欢称呼我的英文名字,叫,六月的 意思,是君的谐音。我来自安徽的市,在 21 年我以市全市第一名 的成绩考上了大学,…...

w193基于Spring Boot的秒杀系统设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

chrome浏览器chromedriver下载
chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新,可以去下载最新的chromedriver使用,自动化中使用新的chromedr…...

【HTML入门】Sublime Text 4与 Phpstorm
文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域,…...

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)
一、进程Process 拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很最大,效率低。 对于操作系统来说,一个任务就是一个进程(Process)ÿ…...

汽车自动驾驶AI
汽车自动驾驶AI是当前汽车技术领域的前沿方向,以下是关于汽车自动驾驶AI的详细介绍: 技术原理 感知系统:自动驾驶汽车通过多种传感器(如激光雷达、摄像头、雷达、超声波传感器等)收集周围环境的信息。AI算法对这些传感…...