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

【计算机网络学习之路】HTTP请求

目录

前言

HTTP请求报文格式

一. 请求行

HTTP请求方法

GET和POST的区别

URL

二. 请求头

常见的Header

常见的额请求体数据类型

三. 请求体

结束语


前言

HTTP是应用层的一个协议。实际我们访问一个网页,都会像该网页的服务器发送HTTP请求,服务器解析HTTP请求,返回HTTP响应。如此就是我们获取资源或者上传资源的原理

HTTP请求报文格式

图片来自网络

HTTP请求报头总体有四部分:

  • 请求行:有三部分:请求方法URL协议版本。彼此用空格分隔
  • 请求头:KV形式的辅助信息
  • 空行:分隔报头(请求行+请求头)有效载荷(请求体);由回车符,换行符组成,即\r\n
  • 请求体:请求发送时携带的数据。数据类型Content-Type的值

一. 请求行

HTTP请求方法

方法说明支持的HTTP协议版本
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要求用隧道协议连接代理1.1
LINK建立和资源之间的联系1.0
UNLINE断开连接关系1.0

其中,最常用的是GETPOST

GET和POST的区别

虽然GET主要作用是获取资源,但也可以提交数据。

两者提交数据的区别是

GET提交的数据会放到url中,以field(字段)= value的形式,置于URL之后,用?分隔前者和请求数据,请求数据间用&分隔。这样密码等数据用户是可见

POST提交的数据会放到请求体中,该过程用户是不可见的

GET传输的数据量小,只传输文本,长度为1024字节,因为受URL长度限制,但效率较高

POST可以传输大量数据,所以上传文件时只能用post方法

GET方法上传数据,是比较不安全的,POST的安全性比GET较高

URL

可以参看URL概念及组成

二. 请求头

请求头(Header)都是以KV方式存放,彼此之间用\r\n分隔。

常见的Header

  • Host:客户端的主机IP和端口号
  • Connection:连接方式,常见为keep-alive,持久连接。报文可能无法一次性发送完,如果没有keep-alive,每一次发送都要建立一次连接
  • User-Agent:包含客户端操作系统,系统引擎版本,浏览器信息。简单过滤一些爬虫访问
  • Content-Type:请求体的数据类型

常见的额请求体数据类型

text/htmlHTML格式
text/plain纯文本格式
image/jpegjpg图片格式
application/jsonJSON数据格式

三. 请求体

请求发送时携带的数据。数据类型Content-Type的值

请求方法为POST和PUT时,请求体就是要上传的数据

GET和DELETE没有请求体

结束语

本篇博客到此结束,感谢看到此处。
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。

http://www.lryc.cn/news/255058.html

相关文章:

  • java之字符串常用处理函数
  • 【XILINX】ERROR:Place:1136 - This design contains a global buffer instance
  • 【文件上传系列】No.0 利用 FormData 实现文件上传、监控网路速度和上传进度(原生前端,Koa 后端)
  • web前端之JavaScrip的笔试题
  • 生活、工作常用API免费接口
  • PHP使用mkcert本地开发生成HTTPS证书 PhpEnv集成环境
  • DHTMLX Scheduler PRO 6.0.5 Crack
  • AddressSanitizer和LeakSanitizer有什么区别
  • CoreDNS实战(二)-CoreDNS+ETCD实现DNS服务发现
  • B站缓存视频M4S合并MP4(js + ffmpeg )
  • 学习IO的第四天
  • Linux:缓冲区的概念理解
  • 中山大学李华山、王彪课题组开发 SEN 机器学习模型,高精度预测材料性能
  • 二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺
  • 【开放集检测OSR】开放集检测和闭集检测的区别和联系:从模型角度进行理解
  • 【Flink】Flink核心概念简述
  • linux-tar命令、解压、压缩
  • Kafka Connect :构建强大分布式数据集成方案
  • 基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL
  • 创建vue项目:node.js下载安装、配置环境变量,下载安装cnpm,配置npm的目录、镜像,安装vue、搭建vue项目开发环境(保姆级教程一)
  • uni-app 微信小程序之好看的ui登录页面(一)
  • [ES]ElasticSearch强转日期的时区问题
  • YOLOv5结合BiFPN,如何替换YOLOv5的Neck实现更强的检测能力?
  • 3.PyTorch——常用神经网络层
  • 状态机的练习:按键控制led灯
  • 看图学源码之 CopyOnWriteArraySet源码分析
  • almaLinux centos8 下载ffmpeg离线安装包、离线安装
  • CSS3 属性: transition过渡 与 transform动画
  • TCP通讯
  • (NeRF学习)3D Gaussian Splatting Instant-NGP