当前位置: 首页 > news >正文

Java--HTTP(上)

HTTP是什么

HTTP(超文本传输协议)是一种应用非常广泛的应用层协议。

HTTP在传输层主要依赖的是TCP协议,但是从HTTP3.0开始,切换到了UDP

这是因为HTTP3.0应用层这里自己实现了可靠传输,而TCP特别影响性能

HTTP的主要应用场景

1.web开发中:网页前端和服务器后端之间的通信

2.移动端app和服务器后端之间的通信

3.分布式系统的服务器之间调用

与HTTPS的区别

HTTP本心不加密数据,存在安全风险,而HTTPS是HTTP的安全版本,核心区别在于加密

HTTP:数据以明文形式传输,容易被窃听伪造

HTTPS:通过SSL/TLS协议对传输数据进行加密,可验证服务器身份,确保数据的完整性和机密性。

客户端服务器的交互模型:

1.多问一答 : 上传一个大文件

2.一问多答 : 下载一个大文件

3.多问多答 :  远程桌面

理解HTTP协议的工作过程

我们在浏览器输入一个网址,这时候浏览器会给对应的服务器发送一个HTTP请求,当服务器收到请求之后,经过处理就会返回一个HTTP响应

当我们访问网站的时候,会不止一次地触发HTTP请求/响应的交互过程

我们可以通过抓包工具来看到详细的交互数据。

Fiddler

我们通过Fiddler 抓包工具来帮助我们了解HTTP

我们访问 sogou.com,可以通过Fiddler 看到如下图

其中我们可以看到蓝色的条目,这是因为不同的颜色代表不同的数据格式

此时蓝色表示的是 HTML

我们点击Raw,此时显示的就是HTTP原始的数据格式

SyntaxView是将原始的文本数据按照语法规则进行美化后的显示

1.当数据被加密或者压缩的时候会乱码

2.数据是二进制非文本的时候,也会是乱码

3.字符编码不匹配也会乱码

4.数据格式错误或损坏也会乱码

HTTP请求结构:

首行包含三个关键信息:

请求方法:

请求URL:

HTTP版本:

其他行:header  请求报头

header 有很多行,每一行都是一个键值对,键和值之间通过 :空格来分割

后续 空行 请求头字段之后必须要有一个回车,告诉服务器“请求头已经结束”

最后是请求体  是向服务器提交的具体数据

HTTP响应结构:

第一行:响应行   包含了HTTP版本 状态码 和状态描述

中间部分· 响应头  直到空行为止是服务器向客户端

空行   响应头之后有个空行 用于分割响应头和响应体 告诉客户端响应头结束

响应体:空行之后的内容,即服务器时即返回的资源,也是客户端真正需要的内容

URL(统一资源定位符):

用于定位互联网上的资源,它通过规定的格式告诉浏览器或其他客服端要如何访问以及访问哪里的资源。

以 https://www.sogou.com/ 为例

协议:https

域名:www.sogou.com

路径:/(表示服务器的根目录,通常对应首页)

省略了默认端口443,查询参数和片段标识符

完整结构:

协议://域名:端口/路径?查询参数#片段标识符

URL Encode(URL编码):

作用:将URL中非法字符,特殊字符或者非ASCII字符转换为标准ASCII字符格式的编码方式

目的:避免字符与URL语法冲突,确保数据传输准确

URI 和 URL

URI(统一资源标识符)

URL(统一资源定位符)

URL 是 URI 的子集

URI的核心作用是“标识资源” 告诉你这是什么资源,不一定包含如何访问资源的信息

URL不仅告诉你这是什么资源,而且还告诉你如何访问资源

认识方法:

GET获取资源1.0、1.1
POST传输实体主体(常用于提交数据)1.0、1.1
PUT传输文件(多用于资源创建 / 更新)1.0、1.1
HEAD仅获取响应头(用于探知资源信息)1.0、1.1
DELETE删除文件1.0、1.1
OPTIONS询问服务器支持的请求方法1.1
TRACE追踪请求路径(用于调试,少用)1.1
CONNECT建立隧道协议连接代理(如 HTTPS 代理)1.1
LINK建立资源间的关联(较冷门)1.0
UNLINE断开资源间的连接(较冷门)1.0

GET 方法最为常用 其次是 POST  PUT  DELETE

GET方法

对于 GET 方法,通常是没有请求体的 

实例:

POST方法

关于POST方法容易在两个场景出现:

        1.登录

        2.上传文件

示例:

GET和POST的区别:

1.GET通常用来表示“获取数据”语义 POST通常表示“提交数据语义”

2.GET通常把给服务器的数据放到 query string 中,POST 通常放到 body中

(GET和POST没有什么本质区别 能用GET的地方可以换成POST 能用POST的地方也可以换成GET)

GET方法一般实现成幂等,而POST则没有这个要求

幂等性:

多次执行相同的请求,最终对系统资源产生的影响与“只执行一次”完全一致

示例:

修改网名为张三,多次提交请求,最后姓名定格为张三,而不是张三张三

不幂等:

多次执行相同的请求,会对系统资源产生累加的副作用

示例:多次往余额增加10元,最后余额就是累加后的结果

HOST报头:

表示服务器主机的地址和端口号

content - length报头:

表示Body中的数据长度

content-Type 报头

表示请求的body中的数据格式

referer报头

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

Cookie:

Cookie是服务器通过HTTP响应报头下发给客户端的小型文本数据

用于在客户端存储信息,通过请求报头携带回给服务器

核心作用:

记录用户的登陆状态,不用频繁重复的输入账号密码。存储了用户的界面偏好(主题,字体大小等等)

以gitee的主题为例:

此时是黑色主题,

两种主题的数据都是存在于Cookie里面的

我们可以将 Cookie里面的 light 改为 dark,此时刷新页面就会将主题改为dark

http://www.dtcms.com/a/582505.html

相关文章:

  • 【软考架构】软件测试-白盒测试方法中的几种测试准则(覆盖准则)
  • 网站建设类公司排名中国建筑人才网怎么样
  • Dify 迁移后常见问题解决方案与使用腾讯云cos上传文件 FILES_URL缺失
  • 郑州网站建设培训网站域名备案认证
  • 专业制作网站公司哪家好软件开发项目总结
  • 切换海外动态IP的方法
  • 设计业务网站外贸自建站类型
  • 网站建设在哪里发布网络优化工程师工资
  • Linux环境下的C语言编程(十七)
  • JAVA算法练习题day64
  • 小华HC32F460串口性能问题与处理思路
  • Java_Hashtable使用及扩容
  • Django序列化器
  • 跳表与B+树
  • 上海外贸网站优化自己做提卡网站
  • 学习日报 20251107|Nacos 注册同一服务多实例架构图
  • 营销型网站建设运营苏州园区
  • 广州站在哪个区酒店 网站构建
  • 网站开发的合同网络工程师中级职称报考条件
  • 相亲网站源码php模版wordpress听歌插件
  • 微网站 服务器在线设计logo图案免费
  • stm32 gpio 先写电平再初始化,是否可行?
  • 数字签名、 数字信封、数字证书
  • 马云的网站是谁建设的wordpress多广告位
  • Leetcode 47
  • 营销型网站分类自己服务器可以做网站
  • EtherCAT命令整理
  • Windows 常用命令行(CMD/PowerShell 通用,标注差异)
  • 小迪安全v2023学习笔记(一百四十五讲)—— Webshell篇魔改冰蝎打乱特征指纹新增加密协议过后门查杀过流量识别
  • 网站源码做exe执行程序域名被墙查询检测