【JavaEE】HTTP(2)

news2024/11/24 4:59:06

在这里插入图片描述
🤡🤡🤡个人主页🤡🤡🤡
🤡🤡🤡JavaEE专栏🤡🤡🤡
🤡🤡🤡下一篇文章:【JavaEE】HTTP协议(1)🤡🤡🤡

文章目录

  • 1.HTTP请求
    • 1.1认识URL
    • 1.2认识方法
    • 1.3认识请求报头

1.HTTP请求

1.1认识URL

URL:唯一资源定位符
URL基本格式
在这里插入图片描述

  1. 协议方案名:常见有http和https两种
  2. 登录认证信息:以前有这种登录认证信息,但现在一般都做成了一个登录界面
  3. 服务器地址:也就是IP地址或者叫域名
  4. 服务器端口号:之前会将端口号写入,但现在基本都省略了,如果协议名是http那么 端口号默认为80,如果协议名是https那么端口号默认为443
  5. 带层次的文件路径:描述了要访问服务器中的哪个资源,因为在一个web服务器(网站)中就会包括很多不同的板块,通过这里的路径就可以找到网站中的不同板块,比如哔哩哔哩中有视频板块,直播板块等等
  6. 查询字符串(query string):就是一些参数,通过这些参数就可以把客户端想传给服务器的数据告知过去,服务器根据你传输过来的参数就可以返回对应的响应,其实这一个过程也是基于键值对实现的。
    urlencode
    encode是针对query string 中的value值转义,比如:
    在这里插入图片描述
    为什么要转义?
    就是url中有许多的特殊含义的符号,在解析的时候,如果query string中的value值也包含这些特殊含义符号,那么就会造成解析失败。
    根据什么来转义的呢?
    特殊字符根据ASCII码表对应的16进制转化的,还需要在转化完成的前面加上%比如:在网页上搜索c++,这个+就会通过ASCII码表转化为2B,然后在这个2B前面加%即可。
    在这里插入图片描述

中文字符也是需要转义的,但是它的编码规则和特殊字符不一样,中文字符是根据utf8码表来转化的,但是同样要加上%比如我现在搜索好人:
在这里插入图片描述
我们再参考一下utf8码表
在这里插入图片描述

1.2认识方法

方法有许多比如:
在这里插入图片描述
但是现在主流用到的方法就两个,一个是GET,另一个是POST

  1. GET:是从服务器中获取数据,通常是搭配query string使用
    大部分网页上都是GET请求
  2. POST:是向服务器中提交数据,通常搭配body使用
    像上传,登录会用到POST
    这两种方法在HTTP协议中是如何构造的?
    GET
    1.在浏览器地址栏直接输入url,此时就是GET请求还有就是点击收藏夹
    2.网页html中可能有一些特殊的标签像img/a/link…会带有url属性,当这些页面被加载之后,解析到了这些标签就会根据url构造新的http请求
    3.表单,html中特殊的标签form
    4.通过js构造
    POST
    1.表单
    2.js
    经典面试题:
    谈谈GET和POST的区别?
    本质上GET与POST是没有区别的。
    但在使用习惯角度上还是有区别的
    1)GET在语义上说通常是"获取数据",POST在语义上说通常是"提交数据"
    2)GET在传递数据的时候一般都是搭配query string使用的,而POST是搭配body来使用的
    3)服务器对于GET的请求设计,经常设计为"幂等"的,而POST请求设计则不要求"幂等"——幂等其实就是固定的意思,就像键值对一样,只要设置好了,那么就是一成不变的。
    4)GET请求的结果可以被缓存,可以被浏览器收藏夹收藏,POST不可以哦。
    缓存:一个网站,通过GET获取到了一些图片,浏览器就可以缓存这些图片,等到你下次来访问这个网站,就不需要再从网络上获取了。直接从硬盘上读取即可,这里的效果平常使用的用户是感知不到的,这样的做法只是提高了请求的效率。

1.3认识请求报头

其实这里的请求报头里面的东西都是键值对,都是标准规定的内容。
Host:请求对应主机的IP和端口号
Content-Length:描述了body的长度,GET请求中没有body,通过空行,POST请求有body,通过空行找到body开始通过Content-Length找到body的结束位置。
Content-Type:是body的数据类型,比如有:图片,视频,音频,字体,html,josn,css等等
User-Agent(UA):显示浏览器版本和系统版本
在这里插入图片描述
UA有什么用呢?
主要是“兼容”,在上古时期,浏览器有许多,并且各个浏览器的版本也不一样,有的浏览器只能看文字,有的能看图片,还有些能看视频以及音频等等,用户访问的浏览器的版本也不同,程序猿就需要根据这个UA提供的浏览器版本号来返回相对应的浏览器版本的响应,这样可以给用户带来更好的体验感。
现在UA主要是来区分PC端和手机端,如果是手机端服务器就返回一个窄屏,如果是PC端则返回一个宽屏,这样又有一个小问题,那就是根据手机端和PC端服务器要返回不一样的显示效果,这样程序猿就需要编写两套代码并且也要维护两套代码,那么开发的成本就增加了,所有前端就发明了一个新的技术“响应式布局”,这个响应式布局就是可以根据设备的尺寸来显示不同的样式。
Referer:表示当前的网页页面是从哪里跳转来的。
如果是直接在收藏夹中点击的url那么这个Referer就是空的
在这里插入图片描述
上述图片就说明该网页是从https://blog.csdn.net/HD_13?spm=1010.2135.3001.5343跳转过来的
Cookite:浏览器本地存储数据的一种机制
Cookite怎么存储的:按照不同的域名分别存储在硬盘上,不同的域名之间的Cookite互不干扰,利用键值对存储文本,键和值都是自定义的。
Cookite从哪里来的:从服务器来,服务器的HTTP响应header中可以填写Set-Cookite字段,就会带有一些键值对
Cookite到哪里去:在后续的请求中,通过HTTP请求的header中Cookite字段,将信息传输给服务器
在这里插入图片描述

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

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

相关文章

C++——类和对象(下)

文章目录 一、再探构造函数——初始化列表二、 类型转换三、static成员静态成员变量静态成员函数 四、 友元友元函数友元类 五、内部类六、匿名对象 一、再探构造函数——初始化列表 之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函…

【读点论文】ASAM: Boosting Segment Anything Model with Adversarial Tuning,对抗学习提升性能

ASAM: Boosting Segment Anything Model with Adversarial Tuning Abstract 在不断发展的计算机视觉领域,基础模型已成为关键工具,对各种任务表现出卓越的适应性。其中,Meta AI 的 Segment Anything Model (SAM) 在图像分割方面表现突出。然…

第十一届MathorCup高校数学建模挑战赛-C题:海底数据中心的散热优化设计(续)(附MATLAB代码实现)

目录 5.3 问题三的求解 5.3.1 数据分析 5.3.2 数据处理 5.3.4 得出结论 5.4 问题四的求解 5.4.1 数据分析 5.4.2 算法分析 5.5 问题五的求解 六、模型评价与推广 6.1 模型的优点 6.2 模型的缺点 6.3 模型的推广 七、参考文献 代码实现 8.1 图 4 的代码 8.2 图 5 的代码 8.3 图…

旗晟巡检机器人的应用场景有哪些?

巡检机器人作为现代科技的杰出成果,已广泛应用于各个关键场景。从危险的工业现场到至关重要的基础设施,它们的身影无处不在。它们以精准、高效、不知疲倦的特性,担当起保障生产、守护安全的重任,为行业发展注入新的活力。那么&…

VMware安装CentOS 7

在虚拟机中安装无论是Windows还是Linux其实都差不多,主要还是需要熟悉VMware的使用,多新增几次就熟悉了,可以反复删除再新增去练习… 如下是安装CentOS 7 安装过程: VMare Workstation 16 PRO 中安装CentOS 7 CentOS 7 下载推荐…

PTA - 嵌套列表求和

使用递归函数对嵌套列表求和 函数接口定义: def sumtree(L) L是输入的嵌套列表。 裁判测试程序样例: /* 请在这里填写答案 */L eval(input()) print(sumtree(L)) # 调用函数 输入样例: 在这里给出一组输入。例如: [1,[2…

数据结构-C语言-排序(1)

代码位置:test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。 1.2-排序分类: 常见的排序算法: 插…

业务终端动态分配IP-DHCP技术、DHCP中继技术

一、为什么需要DHCP? 1、许多设备(主机、无线WiFi终端等)需要动态地址的分配; 2、人工手工配置任务繁琐、容易出错,比如:IP地址冲突; 3、网络规模扩大、复杂度提高,网络配置越来越复杂,计算机的位置变化和数量超过可分配IP地址的数量,造成IP地址变法频繁以及IP地址…

【精品资料】大数据可视化平台数据治理方案(626页WORD)

引言:大数据可视化平台的数据治理方案是一个综合性的策略,旨在确保大数据的质量、安全性、可访问性和合规性,从而支持高效的数据分析和可视化过程。 方案介绍: 大数据可视化平台的数据治理方案是一个综合性的策略,旨在…

SimMIM:一个类BERT的计算机视觉的预训练框架

1、前言 呃…好久没有写博客了,主要是最近时间比较少。今天来做一期视频博客的内容。本文主要讲SimMIM,它是一个将计算机视觉(图像)进行自监督训练的框架。 原论文:SimMIM:用于掩码图像建模的简单框架 (a…

设计模式-UML类图

1.UML概述 UML-统一建模语言,用来设计软件的可视化建模语言; 1.1 UML分类 静态结构图:类图、对象图、组件图、部署图动态行为图:状态图、活动图、时序图、协作图、构件图等 类图:反应类与类结构之间的关系&#xff0…

【46 Pandas+Pyecharts | 当当网畅销图书榜单数据分析可视化】

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 书名处理2.5 提取年份 🏳️‍🌈 3. Pyecharts数据可视化3.1 作者图书数量分布3.2 图书出版年份…

2-36 基于matlab的流行学习算法程序

基于matlab的流行学习算法程序。通过GUI的形式将MDS、PCA、ISOMAP、LLE、Hessian LLE、Laplacian、Dissusion MAP、LTSA八种算法。程序以可视化界面进行展示,可直接调用进行分析。多种案例举例说明八种方法优劣,并且可设置自己数据进行分析。程序已调通&…

podman 替代 docker ? centos Stream 10 已经弃用docker,开始用podman了!

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

前端vue项目打镜像并拉取镜像包

前端vue项目打镜像并拉取镜像包 如图需要准备三部分的内容 1.前置要求 linux 环境 docker环境2.vue打包后的静态文件,需要自行打包 npm run build 打包后上传到服务器3.nginx配置(default.conf文件配置) server {listen 80;serve…

浅谈Visual Studio 2022

Visual Studio 2022(VS2022)提供了众多强大的功能和改进,旨在提高开发者的效率和体验。以下是一些关键功能的概述:12 64位支持:VS2022的64位版本不再受内存限制困扰,主devenv.exe进程不再局限于4GB&#xf…

SQL Server的视图

SQL Server的视图 一、基础 SQL 视图(Views)是一种虚拟表,是基于 SQL 查询结果生成的。这些虚拟表可以包含来自一个或多个表的数据,并且可以像表一样查询;视图是一个表中的数据经过某种筛选后的显示方式,或…

在 Linux 系统中安装MySQL 8.x(Ubuntu和CentOS)

文章目录 0. 前言1. 查看 Linux 的发行版本2. 在 Ubuntu 中安装MySQL 8.x2.1 更新包索引2.1.1 更改 Ubuntu 的镜像源2.1.2 更新软件包、升级软件包(耗时可能较长)2.1.3 可能遇到的问题 2.2 安装MySQL2.3 安全配置2.3.1 密码安全级别2.3.2 删除匿名用户2.…

昇思25天学习打卡营第25天|GAN图像生成

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks,GAN)是一种生成式机器学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。 GAN论文逐…

iOS——MRC与ARC以及自动释放池深入底层学习

MRC与ARC再回顾 在前面,我们简单学了MRC与ARC。MRC指手动内存管理,需要开发者使用retain、release等手动管理对象的引用计数,确保对象在必要时被释放。ARC指自动内存管理,由编译器自动管理对象的引用计数,开发者不需要…