JAVAEE—HTTP

news2024/10/6 10:33:52

文章目录

  • HTTP
    • 导读
    • HTTP解析
    • HTTP的格式分析
      • 环境准备
    • HTTP请求格式
      • 首行
      • header
        • Host
        • Content-Length
        • Content-Type
        • User-Agent (简称 UA)
        • Referer
        • Cookie
      • 空行
      • body
    • HTTP响应格式
    • 认识HTTP的方法
      • POST方法
      • POST和GET的区别
        • 第一:用处
        • 第二:传递数据
        • 第三:GET不安全
        • 第四:get只能传递文本数据,而post可以传输文本也可以传输二进制数据
        • 第五:关于幂等性
        • 第六:GET可以被缓存,而POST不能被缓存
      • 响应返回值

HTTP

导读

在这里插入图片描述

HTTP是一个应用层的协议,它是基于TCP协议传输层的TCP协议进行实现的,诞生于1991年目前已经发展为最主流使用的一种应用层协议。那么HTTP的全称是什么呢?HTTP全称是超文本传输协议,而我们用来写前端的HTML叫什么?叫做超文本标记语言,由此我们其实可以看出来两者的关系,那么什么是超文本呢?超文本,就是以文本的形式去展现内容,但又超脱于文本的表达能力(这就是“超”的意思) 看到这里也许还是你有些许的不明白,其实说白了我们日常生活中看到的视频和图画其实在本质上都是字符串构成的,计算机拿到这些字符串将其解析成了我们所看到的这些画面,那么构成这些画面的文本就叫做超文本。而超文本在网络中传输,从一台机器传输到另一台机器上如果不遵守一个统一的协议的话那么就有可能导致这个文本被翻译出来的意思和原本的就不一样了。由此就产生了超文本协议HTTP。

此外HTTP的请求和响应的格式是不一样的!!!

HTTP解析

那么我们在之前想要了解一个协议那肯定就要知道这个协议的内容或者说是基本格式是什么样子的,而HTTP既然作为超文本协议,既然是个协议那他肯定就有自己的格式,我们应当如何获取呢?当然就是浏览器了。那么我们接下来对HTTP的一个流程进行初步的解析。以搜狗搜索引擎为例。
在这里插入图片描述
首先我们在浏览器中搜索搜狗搜索引擎的时候我们的地址导航栏也会发生变化会变成一连串我们不认识的字符串,其实这里就是因为当我们的打开浏览器在浏览器中输入搜索的内容的时候,那么浏览器会将你输入的内容打包成一个请求,然后将这个请求发送给服务器由服务器对这个请求做分析,并制作响应,当响应制作好之后再向你发送回来,然后浏览器对这个响应做解析,从而变成了你看到的画面如下
在这里插入图片描述
那么我们比如说在搜狗搜索引擎中输入,搜索爱情的诀窍是什么我们来看看这个流程怎么样。
在这里插入图片描述
此时我们发现,当我们搜索这个内容的时候就会发现上面的导航栏的内容改变了并且我们的画面也改变了,那么这个过程其实和上面说的过程也是一样的,这里的流程图如下
在这里插入图片描述

可是光有这个我们仍然不知道这个HTTP具体格式是什么样的啊,那么我么接下来再来具体分析一下。

HTTP的格式分析

环境准备

首先我们要想知道这个HTTP的请求格式和响应格式的话首先最重要的一点就是我们得看到这个是什么样的内容啊可是我们刚刚的请求和响应都是我们的电脑直接发送给了目标服务器,目标服务器接收之后直接给我返回然后电脑再对请求做解析,这个过程我们看不到,那么这个该怎么办呢?当然是利用一些工具了。也就是抓包工具,这个工具的话我用的是Fiddler进行的抓包。

HTTP请求格式

在这里插入图片描述

想要了解HTTP的格式首先我们要先看一下HTTP请求的一个报文内容接下来我们以以上从网站抓包的数据来进行分析。

首行

首先是首行,首行包含的信息有哪些呢?首行第一个包含的信息是一个方法,也就是上面报文中的POST以及我们可以看到的GET
在这里插入图片描述
这都是一种请求资源的方法然后GET或者POST之后就是我们的URL,这个url表示的是你所请求的这个资源在网络种的位置,最后就是这个HTTP的版本从上面我们可以看出我们的HTTP的版本是1.1

header

首行接下来就是header,在header中是以键值对的方式存在的,这个键值对中的各种属性也都是有自己的含义和要求的,我们以较为关键的作为分析。

Host

这里表示的是服务器的地址和端口一般情况下是与我们的url里面的内容相同。

Content-Length

这里表示的是body中的数据长度

Content-Type

请求body中的数据格式

User-Agent (简称 UA)

此处表示的是操作系统和浏览器的信息

Referer

表示当前页面从哪个页面跳转而来,这里我们以上面的在浏览器中搜索抖音为列
在这里插入图片描述
我们可以看到这里的referer中的内容是www.bing.com表明我们是从这个网站跳转而来

Cookie

Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服
务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据).
往往可以通过这个字段实现 “身份标识” 的功能.
每个不同的域名下都可以有不同的 Cookie, 不同网站之间的 Cookie 并不冲突.

空行

空行是为了表示此时head已经结束,是head与body的分割符。在这里面常见的选项是

application/x-www-form-urlencoded: form 表单提交的数据格式. 此时 body 的格式形如:
title=test&content=hello
multipart/form-data: form 表单提交的数据格式(在 form 标签中加上
enctyped=“multipart/form-data” . 通常用于提交图片/文件. body 格式形如

body

在body中一般存储的都是我们的数据这里面存储的数据内容和上面的Content-Type这里息息相关因为这里的字段表明我们的数据是一个什么的形式。
在这里插入图片描述
比如说这里我们访问哔哩哔哩给我们了一个响应。这个响应的body部分给我门返回了一个html网页,也就是哔哩哔哩的首页

HTTP响应格式

在这里插入图片描述
这里我们以访问哔哩哔哩网站的响应为列这里面大部分其实都是一样的,这里面的区别有什么呢?那就是这里面响应部分的首行会返回一个整数,那么这个整数有什么含义呢?

认识HTTP的方法

在这里插入图片描述
get是在HTTP中最常用的一种方法他的主要作用是为了获取某个资源,在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求. 另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求. 后面我们还会学习, 使用 JavaScript 中的 ajax 也能构造 GET 请求
GET 请求的特点
首行的第一部分为 GET
URL 的 query string 可以为空, 也可以不为空.
header 部分有若干个键值对结构.
body 部分为空.

POST方法

POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求
POST 请求的特点
首行的第一部分为 POST
URL 的 query string 一般为空 (也可以不为空)
header 部分有若干个键值对结构.
body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由
header 中的 Content-Length 指定.

POST和GET的区别

第一:用处

POST和GET他们两者GET一般用于我们获取资源,而POST则一般用于提交资源但是要注意这里说的是一般因此我们在实际开发中其实GET请求和POST的请求去做提交和获取都是可以的。

第二:传递数据

GET传递数据一般是通过URL中的query string中而post主要是使用body字段进行,这就衍生了一个说法说GET传递数据有长度限制而post没有其实这个说法是错误的,因为在很久之前由于硬件设备的不发达因此对URL的长度有一定的限制,但是实际上的开发手册里其实对这点是没有任何限制的,这一点我们需要了解。

第三:GET不安全

为什么会产生这个说法呢?原因也很简单因为我们发现get请求中的数据会在url中显示包括我们的用户名啊密码啊之类的,这其实也是第二个原因的延深因为我们get一般会把自己传递的数据query string中这就导致我们的用户名和密码都是显示出来的而我们的post则是会放在,body中因此我们的隐私信息不会被显示出来,这个说法其实也是不对的,首先我们说的安全性一般指的是自己的密码等个人信息是否容易被破解,其次对于黑客来说,你的个人信息保存在query string还是body中其实都一样因为我们通过抓包工具仍然是可以抓取到的。但是为什么我们的密码还是不会被破解呢?因为即使拿到了他也需要进行破解我们的密码,因为他是加密的。

第四:get只能传递文本数据,而post可以传输文本也可以传输二进制数据

这个说法也是错误的,因为第一谁说get不能把数据放在body中的呢?其次就算我们需要传递二进制文件我们也可以在传递之前先进行类型转换啊这不就解决了吗。

第五:关于幂等性

GET 请求一般是幂等的, POST 请求一般是不幂等的. (如果多次请求得到的结果一样, 就视为
请求是幂等的).
这句话呢,严格来说是有漏洞的但是也不完全错误。首先我门要知道什么是幂等呢?幂等指的是我们多次输入和获取的内容是相同的我们称之为幂等,关于这一点知识RFC文档建议我们将GET设置为幂等,但是实际开发中是否幂等还是得看我们自己的代码逻辑不能一棍子打死。

第六:GET可以被缓存,而POST不能被缓存

什么是缓存呢?简单来说这其实是为了提升我们效率的一种方式,假如说我们搜索某个内容的时候出现的内容一直都是相同的,那么浏览器可能就会把这个数据先保存到我们电脑上这样子我们下次访问的时候就可以快速加载出来了。

响应返回值

返回值含义
404该资源不存在,我们知道我们输入的url其实就是我们要获取的资源在网络中的位置,那么这个位置可能在浏览器寻找的过程中发现找不到这就会弹出这个界面。
403访问被拒绝,其实我们显示生活中经常遇到这个情况,比如说你的女神不喜欢你,不让你看她的空间动态那么此时你的界面虽然没有显示出来403,但其实就是拒绝你访问了,当然我们只是讲段子希望各位不要照镜子。
405我们知道获取资源主要就是GET和POST但是也有别的啊而且你访问的这个网站还不一定支持这个方法。
500服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码. 咱们平时常用的网站很少会出现 500 (但是偶尔也能看到).
504当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.
302临时重定向,什么是重定向呢?重定向就是指我们访问一个网站的时候这个网站可能会提示我们说自己已经搬里并且会提示你进入新的网站当然302表示的是临时的也就是说会在一段时间之后恢复正常
301永久重定向
200没有错误

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

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

相关文章

QWidget | Qt::WindowType 枚举的取值及意义QFlags 模板类详解

01 与 QWidget 类有关的部分类的继承图 3、QObject 是所有 Qt 对象的基类,QPaintDevie 是所有可绘制对象的基类。 4、QWidget 类是所有用户界面对象的基类,QWidget 及其子类是开发桌面应用的核心,这些类都位于 QtWidgets 模块内,注意:QtWidgets 是模块,QWidget 是类(少一…

装饰模式【结构型模式C++】

1.概述 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 2.结构 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(Concrete…

区块链安全应用------压力测试

测试要求: 1. 对以下AccountManager智能合约进行压测(基础要求set函数测试,balanceOf涵为20分加分项)2. 在本地链进行测试,需要监控本地进程的资源使用情况。每个进程的multiOutput属性为Avg3. 需要将每一个更改的配置文件截图,和…

指针(5)

前言 本节是有关指针内容的最后一节,本节的内容以讲解指针习题为主,那么就让我们一起来开启本节的学习吧! sizeof和strlen的对比 1.sizeof 我们在学习操作符的时候,学习了sizeof。sizeof存在的意义是用来计算变量所占用的内存空…

智慧火电厂合集 | 数字孪生助推能源革命

火电厂在发电领域中扮演着举足轻重的角色。主要通过燃烧如煤、石油或天然气等化石燃料来产生电力。尽管随着可再生能源技术的进步导致其比重有所减少,但直至 2023 年,火电依然是全球主要的电力来源之一。 通过图扑软件自主研发 HT for Web 产品&#xf…

百度智能云千帆 ModelBuilder 技术实践系列:通过 SDK 快速构建并发布垂域模型

​百度智能云千帆大模型平台(百度智能云千帆大模型平台 ModelBuilder)作为面向企业开发者的一站式大模型开发平台,自上线以来受到了广大开发者、企业的关注。至今已经上线收纳了超过 70 种预置模型服务,用户可以快速的调用&#x…

企业微信hook接口协议,开放平台id转企业用户id

开放平台id转企业用户id 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","openid":["woO9o4EAAAUg47yCUh1mDYVh71AJ8R3w"] } …

陪诊小程序的市场潜力与发展趋势研究

随着社会的快速发展和人口老龄化的加剧,医疗服务需求日益增长,而陪诊服务作为医疗服务的重要补充,正逐渐受到人们的关注和青睐。陪诊小程序作为一种便捷、高效的陪诊服务平台,其市场潜力和发展趋势值得关注。 一、市场潜力分析 人…

【现代交换原理与通信网技术】期末突击

文章目录 自己老师画的重点1. 程控交换机结构2. 测试模拟电路的七项功能3.中继电路的六项功能4.数字用户电路和模拟用户电路比较5.路由规划的基本原则6.七路信令的结构7.随路信令和公共信道信令8.软交换9.无极网和分级网10.路由选择.流量控制的原则/方法11.电路交换&&分…

微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行

Phi-3系列 Phi-3是一系列先进的语言模型,专注于在保持足够紧凑以便在移动设备上部署的同时,实现高性能。Phi-3系列包括不同大小的模型: Phi-3-mini(38亿参数) - 该模型在3.3万亿个令牌上进行训练,设计得足…

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理过…

如何调节电脑屏幕亮度?让你的眼睛更舒适!

电脑屏幕亮度的调节对于我们的视力保护和使用舒适度至关重要。不同的环境和使用习惯可能需要不同的亮度设置。可是如何调节电脑屏幕亮度呢?本文将介绍三种不同的电脑屏幕亮度调节方法,帮助您轻松调节电脑屏幕亮度,以满足您的需求。 方法1&…

超级好看动态视频官网源码

源码介绍 超级好看动态视频引导页源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 效果截图 源码下载 超级好看动态…

4.26日学习记录

[湖湘杯 2021 final]Penetratable SUID提权 SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限 SUID具有一定的限制: 1.仅对于二进制有效; 2.执行者在程序中有可以执行的权限; 3.权限仅在程序…

2024腾讯游戏安全技术竞赛-机器学习赛道

决赛赛题链接https://gss.tencent.com/competition/2024/doc/2024%E8%85%BE%E8%AE%AF%E6%B8%B8%E6%88%8F%E5%AE%89%E5%85%A8%E6%8A%80%E6%9C%AF%E7%AB%9E%E8%B5%9B-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%86%B3%E8%B5%9B.zip 今年的题目是游戏跨语言恶意内容识别 ,题目比较…

C++核心编程——4.5 运算符重载

4.5.0 运算符重载概念 对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 class Person { public:Person() {};Person(int a, int b){this->m_A a;this…

如何设计一个安全的系统架构?

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 如何设计一个安全的系统架构? 如何设计安全的系统?我们总结了 12 条原则供架构师们参考。 设计安全的系统非常重要,原因有很多,从保护敏…

大模型预训练Pretrain

选基座 —> 扩词表 —> 采样&切分数据 —> 设置学习参数 —> 训练 —> 能力测评) 基座google/flan-t5 T5 模型:NLP Text-to-Text 预训练模型超大规模探索 - 知乎相信大多 NLP 相关者,在时隔 BERT 发布近一年的现在&…

阿斯达年代记三强争下载教程 阿斯达年代记游戏下载教程

《阿斯达年代记三强争霸》作为一款蔚为壮观的MMORPG巨制,是由Netmarble与STUDIO DRAGON携手推出的扛鼎之作,预计于4月24日迎来万众瞩目的公开测试。游戏的中心舞台聚焦于阿斯达大陆的统治权争夺,通过三大阵营——阿斯达联邦、亚高同盟与边缘叛…