【Javaee】网络原理-http协议(二)

前言

上一篇博客初步介绍了抓包工具的安装及使用,介绍了http请求报文与响应报文的格式。​​​​​​【Javaee】网络原理—http协议(一)-CSDN博客

本篇将详细介绍http的方法和http报文中请求头内部键值对的含义与作用,以及常见状态码所代表的意义。


一.HTTP方法

HTTP 中的方法,就是 HTTP 请求报文中的首行的第一个部分,描述这个HTTP请求的“动作”要干啥。

HTTP方法并不需要全部都背下来,只需重点掌握POSTGET,以及了解PUTDELETE方法即可

1.GET方法

GET方法是最常用的HTTP方法,常用于获取服务器上的某种资源。

GET方法的触发方式有多种,例如

1.在浏览器中直接输⼊URL,此时浏览器就会发送出⼀个GET请求

2.HTML中的link,img,script等标签,也会触发GET请求

1)浏览器缓存

当我们搜索url打开网页时进行抓包,能够抓取到该网页的数据包(以搜狗搜索为例)

当我们按住Ctrl+F5刷新页面,会发现Fiddler会蹦出更多的搜狗数据包

通过观察类型,我们发现多出来很多JS和CSS的数据包,为什么按住Ctrl+F5与只按F5抓取的包相差这么大?

这是因为一些CSS文件,JavaScript文件,图片,字体文件等内容一般都是固定的,改变的频率非常低。

第一次访问主页时,这些固定资源就保存在我们电脑中,后续再访问该网页,就没必要重复获取上述内容了。

上述机制,就叫做浏览器缓存,可以节省服务器带宽,加快页面的显示速度。

当按住F5时,会忽略缓存,重新从服务器读取信息,我们看到的内容就更多了。

2)GET请求特点

  • 首行的第⼀部分为GET
  • URL的querystring可以为空,也可以不为空.
  • header部分有若⼲个键值对结构.
  • body部分为空.

2.POST方法

1)应用场景

POST⽅法也是⼀种常⻅的⽅法.多⽤于提交⽤户输⼊的数据给服务器(例如登陆页面),还有以下一些场景

1)通过 HTML 中的 form 标签可以构造 POST 请求

2)使用 JavaScript 的 ajax 可以构造 POST 请求

案例:gitte登入

此为登入gitte时的请求包。

POST https://gitee.com/login HTTP/1.1
Host: gitee.com
Connection: keep-alive
Content-Length: 477
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="130", "Microsoft Edge";v="130", "Not?A_Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Origin: https://gitee.com
Content-Type: application/x-www-form-urlencoded
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://gitee.com/login?redirect_to_url=%2F
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: user_locale=zh-CN; oschina_new_user=false; sensorsdata2015jssdkchannel=%7B%22prop%22%3A%7B%22_sa_channel_landing_url%22%3A%22%22%7D%7D; Serve_State=true; remote_way=ssh; visit-gitee--2024-09-19=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2213540275%22%2C%22first_id%22%3A%2219271cba43e911-0006b98e5cd9293a-4c657b58-1327104-19271cba43fea6%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_utm_source%22%3A%22baidu%22%2C%22%24latest_utm_medium%22%3A%22sem%22%2C%22%24latest_utm_campaign%22%3A%22enterprise%22%2C%22%24latest_utm_content%22%3A%22competition%22%2C%22%24latest_utm_term%22%3A%22git%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMThiMGY5YjM5YTgxNTJjLTAyYzY0NGIwMjUxNTQ3ZS03ODUwNTc3MC0xMzI3MTA0LTE4YjBmOWIzOWE5ZTI0IiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiMTM1NDAyNzUifQ%3D%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2213540275%22%7D%2C%22%24device_id%22%3A%2218b0f9b39a8152c-02c644b0251547e-78505770-1327104-18b0f9b39a9e24%22%7D; visit-gitee--2024-10-17=1; sl-session=dgd6CCI7ImdX5HHIWkkpFg==; BEC=1f1759df3ccd099821dcf0da6feb0357; visit-gitee--2024-10-28=1; tz=Asia%2FShanghai; Hm_lvt_24f17767262929947cc3631f99bfd274=1729816449,1729819590,1730210211,1730287145; HMACCOUNT=AC5127A3770AB307; remove_bulletin=gitee-maintain-1729837832; csrf_token=rLI4R%2BAcSJR1tqlVEM5RMwgQykycg5mxULDvo%2BGsCF45tgAif%2F4mo%2FRq5OiFk94EbJfUvrJ5M4L8bac%2FPPu9Yw%3D%3D; user_return_to_0=%2F; Hm_lpvt_24f17767262929947cc3631f99bfd274=1730289897; gitee-session-n=NWpSZ3RQUFBXdnYzcmxCZXRHdTRkZkdPZVB3VkdaYTBsM2lJQzc1cGdaV3VvNERIMVo2dzRSbnpZVFhoREQvbm1YQVR0ZVZVTEJvMXBTQURrYjQwd2ROWHd4MFcxeTd3cDBOY1VHN2FMdzExYTVRVldpWkc1SUV6RFhqcm9PbEhMT3FaMjZORjJpc0ZQeXY2V2h5SGRWVHZ1VXVZMXFWNDFNL3JsY0FuUmp6cFoxTnNONjF3eExoVWE0NUs5RzloZElIdnFqYVZwMTlycFpPMU9ISGhhZS8vY0JIU21Kenk0enQxa1licHhVbnlhTG1WRExoc1Q3UjZoazUra1pwci8rRFNpR0hhYnlrUWNidHNyWEc0SStoV2JuNEY4elZ3SHhyREs4Vm9EU1doczQ3MDRoNFI0dWxIbWtpT2VIOE9RUHlDM1N1YnZMazJJYzNNZVA1QVNXS2ZCS1hrdXRZQ2lFMkQ2a3d3Y1pVNWhDYU9jS2NQU2YxQzVSK0JVNm9wLzlETVhpelZZeUMxVnl4QXZNbnBDRmFPcHpKN3I3N0lVcEM3STNVdzR5Z1VUS1U5c3hJRWxnY0ZsWDlVaExKTHVVd2Zydk1DQ1BNV3NjL2VOZWdXRDlOL0YwVHNNMXFXZklTSGcxU3FLMFJMYmhnQlBkNG40OW9Ea3FBRy9QUkRaNTN4d1ljZStlS2VOU0E5QUl3YkYrS28vUE9YNEIrQWtJRTNyTFZJbDZrPS0tSG50enV3aGd0RHVta2pURFFCamJOUT09--f22767d13ab444f6f426c339707c162adf4fec5eencrypt_key=password&utf8=%E2%9C%93&authenticity_token=CVjaA1WRDaHqYYtYfCyRb7L4I712HS6CjMDsLzeIW2GcXOJmynNjlmu9xuXpcR5Y1n89T1jnhLEgHaSz6t%2FuXA%3D%3D&redirect_to_url=%2F&user%5Blogin%5D=18270014592&encrypt_data%5Buser%5Bpassword%5D%5D=Ug%2F%2F4mYHRNl%2B01lm4tUdlQmMkSE%2FgqHaprf6agZXVAx8c0b%2BE%2BKVhZzJBb95XMQdeMMcNXc%2FsqHvCxJ7ESZZ%2FM7Jk95NAiFG%2B5HVPdE0JsRwVsrKYi76%2FIbAtJVQ1U8j5sGw07Pg8z6EnUerNjLKGLLfWlWxcoTOyYQ54CSWoOw%3D&user%5Bremember_me%5D=0&user%5Bremember_me%5D=1

此外,上传文件时,也会涉及到POST方法,例如:gitte换个头像

2)POST请求特点

  • 首行的第⼀部分为POST
  • URL的querystring⼀般为空(也可以不为空)
  • header部分有若⼲个键值对结构.
  •  body部分⼀般不为空,body内的数据格式通过header中的Content-Type指定,body的长度由header中的Content-Length指定

3)GET与POST的区别

首先,明确抛出结论,这两个方法并没有什么本质的区别(GET能用的场景换成POST也能用,POST能用的场景换成GET也能用)

但是没有本质区别,不代表没有区别

区别

  1. 语义不同:GET⼀般⽤于获取数据,POST⼀般⽤于提交数据。
  2. GET的body⼀般为空,需要传递的数据通过querystring传递,POST的querystring⼀般为空,需要传递的数据通过body传递(若需要,也可以不为空)
  3.  GET请求⼀般是幂等的,POST请求⼀般是不幂等的.(如果多次请求得到的结果⼀样,就视为请求是幂等的)
  4. GET可以被缓存,POST不能被缓存.(这⼀点也是承接幂等性)

什么是幂等性???

幂等性是指某个操作或函数在重复执行多次时,结果始终保持不变的特性。换句话说,无论你执行这个操作多少次,最终的结果都是相同的。

例如:牛吃草,挤得是奶;昨天吃草,挤得是牛奶;明天吃草,挤得是牛奶;每天吃草,挤得都是牛奶,这就是幂等

但是,如果今天牛吃草,挤出的是奶;明天吃草,挤出的是翔,那就不是幂等的了。

3.其他方法

PUT与POST相似,只是具有幂等特性,⼀般⽤于更新

DELETE删除服务器指定资源

OPTIONS返回服务器所⽀持的请求⽅法

HEAD类似于GET,只不过响应体不返回,只返回响应头

TRACE回显服务器端收到的请求,测试的时候会⽤到这个

CONNECT预留,暂⽆使⽤

在进行web开发时,有一种设计服务器接口风格,称为“Restful”

使用不同的方法表示不同的语义(增:POST 删:DELETTE 查:GET 改:PUT)

二.认识报头

1.HOST

表示服务器主机的地址和端口(URL中已有体现)

2.Content-Length和Content-Type

一个请求/响应报头若是没有body部分,也就没有这两个字段

Content-Length

表示body中的数据长度,单位为字节

Content-Type

表示body中的数据格式

 

3.User-Agent(UA)

UA会展现出操作系统的版本信息与浏览器的版本信息,表达你在使用什么样的设备进行上网

UA能够进行数据统计(如统计访问量,多少被点击等),主要是用于区分PC端和移动端。

4.Referer

描述了当前页面是从哪个页面跳转过来的(从哪来)

例如,我从浏览器中点击搜狗搜索,利用Fiddler抓取搜狗的数据包。

可以看到我是从哪个网页跳转到搜狗搜索的。

我们再去点击广告,在广告的数据包中,Referer会显示点击广告前的网页URL

5.Cookie

1)Cookie是什么

Cookie是属于浏览器给网站提供的一种“客户端存储数据”的机制

Cookie也是键值对结构,使用“;”来分割键值对,使用“=”来分割键和值

Cookie看似是从浏览器通过请求发送给服务器的,实际上这些数据最初是从服务器返回给浏览器中的。

对于一个网站来说,主要的数据都是存储在浏览器中,但有些数据需要存储在客户端(如果用户身份信息,上次登入时间等等)

出于安全考虑,浏览器会禁止网页直接访问你的硬盘(硬性要求)
但浏览器并没有把路完全堵死,而是开了个口子,允许网页通过键值对的方式来存储数据(这样的数据本质上是在硬盘上的)

Cookie里面的内容也是来自服务器的,如果是首次访问某个网站,可能会不带有Cookie,而是在响应中带有Set-cookie这样的header,把键值对写回客户端这边,这样服务器以后发送请求时就会带有cookie。

2)Cookie功能

对于HTTP请求来说,针对同一个服务器,彼此之前是独立的。

登入前是一个请求,后续的的请求是怎么知道我已经登入的?
这样的问题,可以通过Cookie解决

通过Cookie,我们可以获取到当前客户端的登入状态,以及快速查询到客户的一些信息。

三.状态码

状态码表示访问⼀个⻚⾯的结果.(是访问成功,还是失败,还是其他的⼀些情况...),以及失败的原因

以下为常见的状态码

1)404 Not Found

浏览器访问的资源在服务器上没有找到(大概率为路径写错了)

2)403 Forbidden 访问被拒绝(没有权限)

3)405 Method Not Allowed

这表示服务器接收到的请求方法不被允许。例如,如果客户端使用POST方法请求一个只允许GET方法的资源,服务器就会返回这个状态码

4)500 Internal Server Error 服务器内部错误

通常为代码中抛出异常,但又没合理的Catch

5)504 Gateway Timeout

服务器问题,响应没有在规定时间内返回

6)302 Found 重定向

访问A网站时自动跳转到B网站

指示请求的资源已被临时移动到其他位置。服务器会在响应中提供新的URL,客户端应使用这个新地址进行后续请求。这个状态码通常用于网站更新或维护期间。


以上便是全部内容,如有不对,欢迎指正

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

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

相关文章

Python实现摇号系统:详细指南与案例解析

目录 一、摇号系统的基本概念与原理 二、摇号系统的准备工作 三、摇号系统的详细实现步骤 1. 数据读取 2. 随机摇号 3. 结果存储 4. 结果查询 5. 主函数 四、案例解析 五、常见问题与解答 如何确保摇号过程的公平性? 如何处理大量用户数据? …

python将数据集中所有文件名升序制作txt文件(医学影像)

import os import re # 设定图像文件所在的路径 img_path ./2d/images/ #需修改路径 # 获取该路径下的所有文件名 img_list os.listdir(img_path) # 过滤出以.nii结尾的文件名 nii_list [f for f in img_list if f.endswith(.nii)] # 使用正则表达式从文件名中提…

Stable diffusion 3.5本地运行环境配置记录

1.环境配置 创建虚环境 conda create -n sd3.5 python3.10Pytorch(>2.0) conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 pytorch-cuda12.1 -c pytorch -c nvidiaJupyter能使用Anaconda虚环境 conda install ipykernel python -m ipykernel install --user …

2001-2023年A股上市公司数字化转型数据(MDA报告词频统计)(三种方法)

2001-2023年A股上市公司数字化转型数据(MD&A报告词频统计)(三种方法) 1、时间:2001-2023年 2、来源:上市公司MD&A报告 3、指标:年份、股票代码、股票简称、行业名称、行业代码、MD&a…

【力扣专题栏】字母异词分组,如何利用强大的容器(unordered_map)解决该问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写 1、题目描述解释 2、算法原理解析 3、代码编写 class Solution { public:vector<vector<string>> groupAnagrams(vector<string>& strs) {//创建哈希表unordered_map<string,vector<string&g…

基于python的语音识别与蓝牙通信的温控系统毕设项目

基于python的语音识别与蓝牙通信的温控系统毕设项目 大家好&#xff0c;我是俊星学长&#xff0c;一名在 Java 圈辛勤劳作的码农。今日&#xff0c;要和大家分享的是一款基于python的语音识别与蓝牙通信的温控系统毕设项目。项目源码以及部署相关事宜&#xff0c;请联系小村学…

MySQL第四次作业

一、题目要求 二、创建相关的数据库和表以及表的处理 1. 修改student 表中年龄(sage)字段属性&#xff0c;数据类型由int 改变为smallint 2.为Course表中Cno 课程号字段设置索引,并查看索引 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_I…

Docker-安装

操作系统&#xff1a;Ubuntu 20.04.6 LTS 更新apt sudo apt update 删除旧版本docker sudo apt-get remove docker docker-engine docker.io 安装docker sudo apt install docker.io 查看docker版本 docker --version 启动docker 启动docker sudo systemctl start docker 启用…

Elasticsearch 安装教程:驾驭数据海洋的星际导航仪

目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…

SparkSQL整合Hive后,如何启动hiveserver2服务

当spark sql与hive整合后&#xff0c;我们就无法启动hiveserver2的服务了&#xff0c;每次都要先启动hive的元数据服务&#xff08;nohup hive --service metastore&#xff09;才能启动hive,之前的beeline命令也用不了&#xff0c;hiveserver2的无法启动&#xff0c;这也导致我…

【网络安全】揭示 Web 缓存污染与欺骗漏洞

未经许可,不得转载。 文章目录 前言污染与欺骗Web 缓存污染 DoS1、HTTP 头部超大 (HHO)2、HTTP 元字符 (HMC)3、HTTP 方法覆盖攻击 (HMO)4、未键入端口5、重定向 DoS6、未键入头部7、Host 头部大小写规范化8、路径规范化9、无效头部 CP-DoS10、HTTP 请求拆分Web 缓存污染与有害…

网络自动化01:netmiko基础、netmiko简单demo

本系列应该是记录我在网络自动化中的学习、使用。具体更新多少期、什么频率都不太清楚。 同时本文的记录方式不会是那么的符合学习的思路&#xff0c;需要更加详细的内容建议阅读官方文档等。 本人学习的路径是基于九净老师的NetDevOps加油站&#xff0c;但本文有所简化&#x…

一篇文章理解CSS垂直布局方法

方法1&#xff1a;align-content: center 在 2024 年的 CSS 原生属性中允许使用 1 个 CSS 属性 align-content: center进行垂直居中。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewpo…

上海亚商投顾:沪指缩量调整 华为概念股午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整&#xff0c;沪指、深成指午后跌超1%&#xff0c;创业板指一度跌逾2%&#xff0c;尾盘跌幅有…

近百万奖金!2024 Web3.0 创新大赛重磅来袭!

10月30日&#xff0c;中国互联网协会与香港Web3.0协会共同组织举办的2024 Web3.0 创新大赛在上海举行启动会&#xff0c;宣布大赛正式在DataFountain竞赛平台&#xff08;简称DF平台&#xff0c;http://www.datafountain.cn&#xff09;启动上线。 大赛面向社会各界征集参赛团队…

Github 2024-11-01 开源项目月报 Top19

根据Github Trendings的统计,本月(2024-11-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目3JavaScript项目3Svelte项目1Jupyter Notebook项目1Ruby项目1HTML项目1Rust项目1Java项目1C++项目1Go项目1Python中的…

操作系统实验记录

实验零:虚拟机安装 一、安装vmware虚拟机 与vmware匹配搜索结果 - 考拉软件 (rjctx.com),下载17.5.1版本即可下载后对照教程安装 二、下载iso虚拟驱动 搜索清华大学镜像网站,点击再搜ubuntu,下载这个4.1GB的iso文件安装后打开vmware虚拟机 三、配置vmware虚拟机 右键管…

五层塔灯——智能仓储的守护者

在繁忙的现代仓库中&#xff0c;每一寸空间都承载着货物的流转与信息的传递。然而&#xff0c;传统仓库管理常常面临着效率低下、错误频发的问题。正是在这样的背景下&#xff0c;一款名为“五层塔灯”的创新产品应运而生&#xff0c;它以其独特的设计理念和卓越的性能&#xf…

开通商家转账到零钱提交注意事项

商家转账到零钱是微信支付提供的一项功能&#xff0c;允许商家将资金直接转入用户的微信零钱账户。不过目前该接口的申请目前采用人工审核&#xff0c;对商家提交的材料设置了比较高的门槛导致很多商家的申请屡次被驳回&#xff0c;这边文章总结了我们数千次成功申请的经验以帮…

【环境风险评估、风力发电、城市街道排放、生态气象等领域】WRF-LES与PALM微尺度气象大涡模拟

PALM和WRF-LES主要应用于微尺度气象学领域&#xff0c;具体包括以下几个方面&#xff1a; 城市和复杂地形环境中的流场模拟&#xff1a;PALM特别适用于城市和复杂地形环境中的流场模拟。这类模拟对于理解城市热岛效应、污染物扩散、城市通风等城市气象问题至关重要。 边界层动…