JavaEE-HTTP协议(二)

news2024/11/30 9:00:12

目录

  • HTTP请求的方法
    • GET方法
    • POST 方法
    • 其他方法
  • “报头”
    • User-Agent
    • Referer
    • Cookie
  • HTTP响应
    • 200 OK
    • 404 Not Found
    • 403 Forbidden
    • 405 Method Not Allowed
    • 500 Internal Server Error
    • 504 Gateway Timeout
    • 302 Move temporarily
    • 301 Moved Permanently

HTTP请求的方法

在这里插入图片描述

GET方法

GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源.
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 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 指定

GET 和 POST的区别
.语义不同: GET 一般用于获取数据, POST 一般用于提交数据. 
GET 的 body 一般为空, 需要传递的数据通过 query string 传递, POST 的 query string 一般
为空, 需要传递的数据通过 body 传递

GET 请求一般是幂等的, POST 请求一般是不幂等的. (如果多次请求得到的结果一样, 就视为
请求是幂等的). 
GET 可以被缓存, POST 不能被缓存. (这一点也是承接幂等性). 

其他方法

  • PUT 与 POST 相似,只是具有幂等特性,一般用于更新
  • DELETE 删除服务器指定资源
  • OPTIONS 返回服务器所支持的请求方法
  • HEAD 类似于GET,只不过响应体不返回,只返回响应头
  • TRACE 回显服务器端收到的请求,测试的时候会用到这个
  • CONNECT 预留,暂无使用
  • “报头”

    header 的整体的格式也是 “键值对” 结构.
    每个键值对占一行. 键和值之间使用分号分割.

    Host:表示服务器主机的地址和端口.
    Content-Length :表示 body 中的数据长度.
    Content-Type:表示请求的 body 中的数据格式.

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    常见选项:
    application/x-www-form-urlencoded: form 表单提交的数据格式. 此时 body 的格式形如:

    title=test&content=hello
    

    multipart/form-data: form 表单提交的数据格式(在 form 标签中加上
    enctyped=“multipart/form-data” . 通常用于提交图片/文件. body 格式形如:

    Content-Type:multipart/form-data; boundary=----
    WebKitFormBoundaryrGKCBY7qhFd3TrwA 
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA 
    Content-Disposition: form-data; name="text" 
    title 
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA 
    Content-Disposition: form-data; name="file"; filename="chrome.png" 
    Content-Type: image/png 
    PNG ... content of chrome.png ... 
    ------WebKitFormBoundaryrGKCBY7qhFd3TrwA-- 
    

    application/json: 数据为 json 格式. body 格式形如:

    {"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16
    a861fa2bddfdcd15"}
    

    在这里插入图片描述

    User-Agent

    表示用户在拿一个啥样的东西来上网。
    形如:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/91.0.4472.77 Safari/537.36
    

    其中 Windows NT 10.0; Win64; x64 表示操作系统信息
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 表示浏览器信息.

    Referer

    表示这个页面是从哪个页面跳转过来的. 形如

    https://v.bitedu.vip/login
    

    如果直接在浏览器中输入URL, 或者直接通过收藏夹访问页面时是没有 Referer 的.

    Cookie

    Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服
    务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据). 
    

    浏览器为了安全,默认情况下不让js访问到用户电脑上的文件系统的,假如某个恶意网站你不小心一点,就可能会触发恶意代码,把你电脑上的很多文件都给删除不见了。
    但是这样的安全限制,也带来了一些麻烦,有时候,确实又需要让来持久化存储一些用户的信息,方便后续访问。
    在这里插入图片描述
    cookie就是浏览器给页面提供的一种能持久化存储数据的机制。(持久化指的是数据不会因为程序重启而丢失)

    cookie的组织形式:

  • 先按照域名来组织,针对每个域名,分别分配一个小房间;假如我访问gitee,浏览器就会给gitee记录一组cookie;
  • 每个小房间里面又会按照键值对的方式来组织数据;
  • 在这里插入图片描述
    Cookie数据从哪里来的?其实是服务器返回给客户端的~
    可以看到包含了一组这样的 header;就是服务器完成身份认证之后,就给客户端返回了一些具体的信息;信息就是通过 Set-Cookie 这样的 响应报头 来表示的;

    在这里插入图片描述

    HTTP响应

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

    200 OK

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

    404 Not Found

    表示要访问的资源不存在;

    403 Forbidden

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

    405 Method Not Allowed

    即对方的服务器不一定都支持所有的方法 ( 或者不允许用户使用一些其他的方法 );
    比如尝试使用get来访问人家的服务器,但是人家只支持post,于是就会返回405;

    500 Internal Server Error

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

    504 Gateway Timeout

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

    302 Move temporarily

    临时重定向.

    理解 "重定向"
    就相当于手机号码中的 "呼叫转移" 功能. 
    比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋
    友知道新号码, 
    只要我去办理一个呼叫转移业务, 其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678上. 
    

    在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页.
    响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面.

    301 Moved Permanently

    永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.
    301 也是通过 Location 字段来表示要重定向到的新地址.

    在这里插入图片描述

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

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

相关文章

Jmeter之直连数据库框架搭建简介

案例简介 通过直连数据库让程序代替接口访问数据库,如果二者预期结果不一致,就找到了程序的缺陷。 下面通过一个案例分析讲解如何实现:获取某个字段值,放在百度上搜索。 实现方式 1、Jmeter本身不具备直连数据库的功能&#xf…

机器学习笔记之生成模型综述(四)概率图模型 vs 神经网络

机器学习笔记之生成模型综述——概率图模型vs神经网络引言回顾:概率图模型与前馈神经网络贝叶斯网络 VS\text{VS}VS 神经网络表示层面观察两者区别推断、学习层面观察两者区别引言 本节将介绍概率图模型与神经网络之间的关联关系和各自特点。 回顾:概率…

Javaweb安全——Dubbo 反序列化(一)

Dubbo 反序列化(一) Dubbo 基础 Apache Dubbo 是一款 RPC 服务开发框架。提供三个核心功能:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。 节点角色 节点角色说明Provider暴露服务的服务提供者Consume…

leaflet 加载KML数据显示图形(方法3)

第061个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载kml文件,并解析后在地图上显示图形,这里是第三种方法,前两种方法请参考目录查询。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共81行…

大数据培训课程分享:Python数据分析与挖掘实战课程介绍

《Python数据分析与挖掘实战》课程内容以Python数据分析与挖掘的常用技术与真实案例相结合的方式,深入浅出地介绍Python数据分析与挖掘的重要内容,共分为基础篇(第1~5章)和实战篇(第6~11章)。 基础篇内容包…

Git 安装和使用(非常详细教程)

Git 安装和使用Tips 目录:导读 1. git的安装 1)首先去下载 2)傻瓜式下一步再下一步地去安装 2. git的常见命令 提交代码 下载代码 分支提交代码 3. git的常见问题 1) 提示出错信息:fatal: remote origin already exists. 2) 发现日志等文件没…

通过异常处理错误

写在前面Java的基本理念是"结构不佳的代码不能运行"。发现错误的理想时机是在编译阶段, 也就是在你试图运行程序之前。然而, 编译期间并不能找出所有的错误, 余下的问题必须在运行期间解决。这就需要错误源能通过某种方式, 把适当的信息传递给某个接收者——该接收者…

情人节特刊 | “恋爱容易,相守难!” 犀思老兵谈破局之道!

付出甘之如饴,所得归于欢喜。 主动付出真心,问心无愧,未来无悔。老吴是我们公司十多年经验的售后服务主管,平时聊的不多,中午一起吃饭,偶然看到新闻说春节后多地都有排队办理离婚的现象。我不禁感叹一句&am…

三种查找Windows10环境变量的方法

文章目录一.在设置中查看二. 在我的电脑中查看三. 在资源管理器里查看一.在设置中查看 在系统中搜索设置 打开设置,在设置功能里,点击第一项 系统 在系统功能里,左侧菜单找到关于 在关于的相关设置里可以看到高级系统设置 点击高级系…

Java如何整合FFmpeg、FFprobe等音视频处理工具,零基础照样玩

前言:时隔一年多了,不知不觉博客停更那么久了,那不忘初心还记得吗? 最近在做音视频相关的开发,没什么资料并且之前也没有接触过这方面, 咨询了T届的好友,拿到了下面的这张表情包,问题…

从事架构师岗位快2年了,聊一聊我和ChatGPT对架构的一些感受和看法

从事架构师岗位快2年了,聊一聊我和ChatGPT对架构的一些感受和看法 职位不分高低,但求每天都能有新的进步,永远向着更高的目标前进。 文章目录踏上新的征程架构是什么?架构师到底是干什么的?你的终极目标又是什么&#…

链表带头结点与不带头节点的区别

链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表可分为:单链表和双链表,带头结点的链表和不带头结点的链表,循环链表和非循环链表 为了表示每个元素与其…

MySQL数据库调优————SQL性能分析

TIPS 本文基于MySQL 8.0 本文探讨如何深入SQL内部,去分析其性能,包括了三种方式: SHOW PROFILEINFORMATION_SCHEMA.PROFILINGPERFORMANCE_SCHEMA SHOW PROFILE SHOW PROFILE是MySQL的一个性能分析命令,可以跟踪SQL各种资源消耗。…

VLAN间通信,看完这个就完全懂了(单臂路由和三层交换)

第九章:实现VLAN间通信 划分VLAN后,由于广播报文只在同VLAN内转发,所以不同VLAN的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同VLAN的用户又常有互访的需求,此时就需要实现不同VLAN的…

KDNM5000-10A-2剩余电流保护器测试仪

一、产品概述 KDNM5000-10A-2型剩余电流保护器测试仪(以下简称测试仪),是本公司改进产品,是符合国家标准《剩余电流动作保护器》(GB6829—95)中第8.3条和GB16917.1—1997中第9.9条验证AC型交流脱扣器动作特性要求的专用测试仪器。…

Nacos微服务笔记

Nacos安装Nacos 的 Github(Tags alibaba/nacos GitHub)下载我们所需的 Nacos 版本,可以选择 windows 或者 Linux。 进入官网,选择合适版本,tar.gz为linux版本,zip为windows版本。下载并解压 nacos-server…

【C++进阶】一、继承(总)

目录 一、继承的概念及定义 1.1 继承概念 1.2 继承定义 1.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1 继承的分类 7.2 菱形虚拟…

【SAP Abap】X-DOC:SE11 - 创建配置表并分配事务码

SE11 - 创建配置表并分配事务码1、创建自定义表2、创建表维护功能3、功能验证4、设置事务码5、带出字段默认值(1)方法一:表维护事件(2)方法二:屏幕事件1、创建自定义表 SE11,创建自定义表&…

结构体的三种定义方法、结构体类型名(可选标志符)什么时候可以省略

结构体的三种定义方法 一、单独定义: 先定义结构体类型,再定义变量   定义结构体的格式如下:    struct 结构体名 {    若干数据项;    } ;   其中,struct为关键字; 结构体名是用户定…

golang 入门教程:迷你 Twitter 后端

请记住,这个项目主要是为了稍微熟悉下Golang,您可以复制架构,但该项目缺少适当的 ORM,没有适当的身份验证或授权,我完全无视中间件,也没有测试。 我将在其自己的部分中讨论所有这些问题,但重要的…