【JavaEE】HTTP的方法、报头、状态码

news2024/9/22 15:37:48

✨哈喽,进来的小伙伴们,你们好耶!✨

🛰️🛰️系列专栏:【JavaEE】

✈️✈️本篇内容:http请求的方法、报头;状态码!

🚀🚀代码存放仓库gitee:JavaEE代码!

⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,星夜启程!

继上篇博客,我们已经了解到什么是http协议,以及http协议格式,http请求中的URL;本票博客我们继续学习http的后序内容。

目录

http中请求的方法;

1. GET 方法

2、认识报头(header)

3、User-Agent

4、Referer

 5、cookie

http响应;

1、200 OK

2、404 Not Found

3、403 Forbidden

4、405 Method Not Allowed

5、500 Internal Server Error

6、504 Gateway Timeout

7、302 Move temporarily


http中请求的方法;

http中的方法非常多,其中最常用的就是get/post方法,也是我们本篇博客需要讲解的内容!

注:http中引入这些方法的初衷就是为了表示不同的语义,但是理想很丰满,现实很骨感,随着人们的使用,现在大家写代码基本就是get/post混合随便使用,正因为这样,这些方法之间的界限也就变得不那么明显了。

首先:get/post没有本质区别!具体来说就是能使用get的场景也能使用post;能使用post的场景也能使用get;

1、语义上的区别

get通常用来取数据;post通常用来上传数据;

2、是否有body

通常情况下:get是没有body的,get通过query string向服务器传递数据;post是有body的,post通过body向服务器传递数据,但是post没有query string;

3、是否幂等

get一般请求是幂等的,post一般是不幂等的。(幂等是指每次你相同的输入,输出结果是确定的)

4、get可以被缓存,post不能被缓存;

1. GET 方法

GET 是最常用的 HTTP 方法 . 常用于获取服务器上的某个资源 在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求 .; 像HTML 中的 link, img, script 等标签 , 也会触发 GET 请求

2、认识报头(header)

header 的整体的格式也是 " 键值对 " 结构; 每个键值对占一行 键和值之间使用分号分割;
Host :
表示服务器主机的地址和端口
比如:www.gitee.com
Content-Length :
表示 body 中的数据长度
Content-Type :
表示请求的 body 中的数据格式
后面两个属性是在描述body,如果你的请求里没有body,也就不需要这两个字段了。
补充知识:因为http也是基于tcp的协议;tcp是一个面向字节流的协议,合理的设计应用层的协议,有利于明确包 和 包之间的边界(粘包问题)。

3、User-Agent

表示用户在拿一个啥样的东西来上网。
我们刚才抓包的结果里面就有:

解释:

Mozilla是开发Firefox的组织;Windows NT 10.0表示操作系统是win10;x64表示64位操作系统;

Chrome->浏览器;

那么UA现在最大的作用就是区别屏幕的尺寸和比例;比如我们使用的手机和电脑,屏幕比例不同,页面布局就得不同;服务器就可以根据UA来区分当前是手机还是电脑;

4、Referer

表示了当前的页面是从哪个页面跳转而来的;

注意referer不一定有,当你在浏览器直接输入地址的时候,或者直接从收藏夹点击过来,这个时候就没有referer;

step1:假如我们在百度搜索牙疼;

 step2:我们选择一个链接点进去;

通过fiddler抓包可以看到这里会显示referer的信息;

 5、cookie

在讲cookie之前,大家需要知道浏览器为了安全,默认情况下不让js访问到用户电脑上的文件系统的,假如某个恶意网站你不小心一点,就可能会触发恶意代码,把你电脑上的很多文件都给删除不见了;

但是这样的限制又有点问题,有时候确实需要让这个页面来持久化存储一些用户的信息,方便后续访问;

那么如何解决呢?

虽然不能让页面的js访问你整个磁盘的数据,但是可以给浏览器单独分配一个空间,用来存储相关信息,这样就可以让js随便访问这个空间;这个空间有很多种形式,其中最经典的就是cookie;

定义:cookie就是浏览器给页面提供的一种能持久化存储数据的机制。(持久化指的是数据不会因为程序重启而丢失)

cookie的组织形式:

1、先按照域名来组织,针对每个域名,分别分配一个小房间;假如我访问gitee,浏览器就会给gitee记录一组cookie;

2、每个小房间里面又会按照键值对的方式来组织数据;

如何查看cookie?

step1:点击浏览器栏上有个小锁;可以看到cookie这个选项;

 step2:点击进去便可看到浏览器给gitee记录的一组cookie;

可以看到包含了一组这样的 header;就是服务器完成身份认证之后,就给客户端返回了一些具体的信息;信息就是通过 Set-Cookie 这样的 响应报头 来表示的;

http响应;

状态码:表示这次请求是成功还是失败,以及失败的原因是什么;

1、200 OK

这是一个最常见的状态码 , 表示访问成功;
比如抓包抓到的大部分结果都是 200;

2、404 Not Found

表示要访问的资源不存在;
比如我们在URL里面输入www.baidu.com/1.html

 那么这个路径肯定是不存在的,就会出现404的情况;

3、403 Forbidden

表示访问被拒绝 . 有的页面通常需要用户具有一定的权限才能访问 ( 登陆后才能访问 ). 如果用户没有登陆直接访问 , 就容易见到 403;
比如我们访问一个gitee的私有仓库,这个时候大概率就会出现403;

4、405 Method Not Allowed

即对方的服务器不一定都支持所有的方法 ( 或者不允许用户使用一些其他的方法 );
比如尝试使用get来访问人家的服务器,但是人家只支持post,于是就会返回405;
后续博主更新servlet的时候再给大家展示;

5、500 Internal Server Error

服务器出现内部错误 . 一般是服务器的代码执行过程中遇到了一些特殊情况 ( 服务器异常崩溃 ) 会产生这个状态码;

6、504 Gateway Timeout

当服务器负载比较大的时候 , 服务器处理单条请求的时候消耗的时间就会很长 , 就可能会导致出现超时的 情况;

7、302 Move temporarily

即表示临时重定向如何理解?
即可以理解为,我之前使用的手机号码是12345,但是我现在新的手机号码为67890,那么不需要知道我的新手机号,我只需要办理一个呼叫转移功能,通过这个旧的号码就可以呼叫到我这个新的号码;
注:这个词在我们以后的学习过程中很多场景都会涉及到,不仅仅是http,不同的场景细节上有所差异,但表示的核心含义都是呼叫转移;
上面展示了一些常见的状态码,但是实际上http的状态码是非常多的;
http状态码大全: http状态码合集!

 小技巧:

http状态码这么多,我们不需要全部记住,只需要记住几个常见的状态码即可!

2开头,都属于成功;

3开头都属于重定向;

4开头都属于客户端出现错误;

5开头都属于服务器出现错误;

OK,那么本篇博客的内容就到这里啦,我们下期再见!!

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

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

相关文章

学习QCustomPlot【4】库官方examples之plots解读

文章目录一、前言二、案例解说0:Quadratic Demo【二次曲线demo】1、Simple Demo【简单demo】2、Sinc Scatter Demo【Sinc函数散点demo】3、Scatter Style Demo【散点样式demo】4、Line Style Demo【线型demo】5、Scatter Pixmap Demo【图标散点demo】6、Date Demo【…

RANSAC的实现与应用

一、前言RANSAC(Random Sample Consensus)算法并不陌生,在上一篇博客中(基于SIFT的图像Matlab拼接教程)也提到过,之前代码中也多次用过,其在直(曲)线拟合、特征匹配、过滤外点(Outlier)等领域有着重要的应用。RANSAC出…

线性代数之线性基

在谈论线性基之前,先介绍什么是基向量. 根据高中数学,一个二维直角平面坐标系中的所有向量都可以只用(0, 1)和(1, 0)合成.那么(0, 1)和(1, 0)就是基向量,所有基向量能合成的所有向量被称为基向量的张成空间. 在二维空间中,有没有其他的向量能作为基向量呢?答案是肯定的. 上图…

Oracle事務簡述

簡述本文主要介紹內容有事務的隔離級別,oracle支持的事務隔離級別,事務的提交與回滾,保存點內容事務的ACID特征介紹事務繞不過事務的ACID四個特征,這裡簡單回顧以下原子性(Atomicity)事務的執行要麼全部成功…

广义霍夫变换和模板匹配的不同

简述说到霍夫变换,做图像的知道经典霍夫变换最常用于检测规则曲线,如直线、圆、椭圆等。而广义霍夫变换是为了检出那些无法写出解析式的不规则形状,虽然在深度学习大行其道的时代,霍夫变换也还是有很多应用场景,另外广…

2023年黑马Java入门到精通教程--面向对象

推荐教程:java零基础入门到精通 面向对象编程的例子 设计类,创建对象并使用 1. 类和对象是什么? 类:是共同特征的描述(设计图);对象:是真实存在的具体实例。 2. 如何设计类? 3. 如何创建对象…

CISP-PTE-Windows2003教程

为方便后续操作,建议和kali在同一网段。 获取到靶机IP后,扫描端口,1433是sqlserver的 测出用户名admin,但是密码爆破失败 扫描目录发现配置文件 配置文件中找到数据库的用户名和密码 使用Microsoft SQL Server Studio连接&#x…

MySQL从入门到精通(第0篇):全程有动画演示,适合入门学习

B站地址 文章目录一、MySQL的系统框架1. 连接池1.1 连接模块1.2 连接池2. SQL接口、SQL解析器、SQL优化器3. 存储引擎二、MySQL数据写入原理三、MySQL存储结构1. 使用InnoDB创建表2. 详述ibd文件中的存储结构2.1 页的数据连续存储2.2 行的结构2.3 区的结构2.4 组的结构2.5 段的…

剑指 Offer 33. 二叉搜索树的后序遍历序列

题目 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true&#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。 思路 二叉搜索树的特点是&#xff1a;左子树的值 < 根节点 < 右子树的值后序遍历的顺序是…

【逐步剖C】第三章-数组

一、一维数组 1. 一维数组的定义与使用 &#xff08;1&#xff09;数组的简单概念&#xff1a;一组具有相同类型的元素的集合 &#xff08;2&#xff09;数组的创建&#xff1a; 格式&#xff1a;类型名数组名[数组大小] 需要注意的是&#xff1a;对多数情况而言&#xff0c;…

# Vue中的Mixin混入

Vue中的Mixin混入 将组件的公共逻辑或者配置提取出来&#xff0c;哪个组件需要用到时&#xff0c;直接将提取的这部分混入到组件内部即可。这样既可以减少代码冗余度&#xff0c;也可以让后期维护起来更加容易。 1. 什么是Mixin&#xff1f; 混入 (mixin) 混入 (mixin) 将组…

数据库分类

关系型与非关系型 关系数据库 MySQL、MariaDB&#xff08;MySQL的代替品&#xff09;、 Percona Server&#xff08;MySQL的代替品&#xff09;、PostgreSQL、 Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE…

阿里云中间件2024届校园招聘

【团队介绍】 阿里云云原生中间件团队负责分布式软件基础设施&#xff0c;为阿里云上万家企业提供如微服务引擎、服务网格、消息服务、分布式事务等分布式基础服务&#xff0c;加速企业上云的进程和创新速度。同时&#xff0c;云原生中间件团队也服务着阿里集团众多核心业务和…

智能指针(三)—— shared_ptr 循环引用问题

shared_ptr 作为智能指针&#xff0c;可以满足大多数场景&#xff0c;对于一些特殊情况&#xff0c;可能会引发循环引用问题。 目录 1、循环引用案例分析 (1) 案例介绍 (2) 原因分析 2、weak_ptr 解决循环引用 1、循环引用案例分析 (1) 案例介绍 我们通过实际案例来了解…

网络编程 1 相关基础概念 及 请求、响应类 定义

目录 一、HTTP基本概念 1、HTTP是什么 2、HTTP客户端是什么 3、HTTP消息结构 4、服务器响应信息 二、相关概念 1、网址 URL 2、IP地址 3、域名 4、域名与IP关系 5、域名解析 6、DNS 三、设计请求、响应类基本数据结构 1、请求类定义 2、响应类定义 一、HTTP基本概…

AD引脚交换

19年写过一篇AD交换引脚的文章&#xff0c;原文请查阅AD18调PIN方法及注意事项&#xff0c;该方法是手动更改焊盘的网络&#xff0c;如果是对于少量的或者零散的引脚交换还好&#xff0c;但遇到像FPGA、CPLD或者端子这种大量引脚需要调PIN的情况还是一个一个手动更改就很费时了…

java 微服务 RabbitMQ高级 消息可靠性问题 死信交换机 延迟队列 惰性队列

消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性问题&#xff08;面试很会问&#xff09; 针对这些问题&#xff0c;RabbitMQ分别给出了解决方案&#xff1a; 生产者确认机制 mq持久化 消费者确认机制 失败重试机制 下面我们就通过案…

基于Android的办公用品管理平台的设计与实现

需求信息&#xff1a; 教师端&#xff1a; &#xff08;1&#xff09;注册登录&#xff1a;教师通过输入自己的工号和密码登录系统&#xff1b; &#xff08;2&#xff09;信息修改&#xff1a;教师可以完善个人信息&#xff08;院系、职务等&#xff09;&#xff1b; &#xf…

DMS感知方案前装赛道「排位」,2025年750万辆市场争夺

对舱内驾驶员、乘客的关怀&#xff0c;正在成为车企新一轮体验升级的关键突破口。在2023年CES展上&#xff0c;类似的产品方案也成为汽车行业的焦点。 比如&#xff0c;一家名为Myant的创新材料技术公司&#xff0c;在今年CES期间推出了一款将传感器和执行器&#xff08;与编织…

深度解刨性能测试工具Locust

An open source load testing tool. 一个开源性能测试工具。 define user behaviour with python code, and swarm your system with millions of simultaneous users. 使用Python代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。 如果你常关注我的博客&…