【计算机网络】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 |

其中,最常用的是GET和POST

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/html | HTML格式 |
| text/plain | 纯文本格式 |
| image/jpeg | jpg图片格式 |
| application/json | JSON数据格式 |

三. 请求体

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

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

GET和DELETE没有请求体

结束语

本篇博客到此结束,感谢看到此处。

欢迎大家纠错和补充

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。

相关推荐
---学无止境---8 分钟前
Linux中dcache和inode缓存回收函数的实现
linux
Мартин.10 分钟前
[Meachines] [Hard] Pollution MyBB+Redis_session+PHP-Filter+PHP-FPM+prototype
linux
总有刁民想爱朕ha12 分钟前
银河麒麟v10 Mysql8部署教程(小白版)
linux·mysql数据库备份
Pluchon17 分钟前
硅基计划5.0 MySQL 叁 E-R关系图&联合/多表查询&三大连接&子查询&合并查询
开发语言·数据库·学习·mysql
学工科的皮皮志^_^27 分钟前
网口学习理解
经验分享·笔记·嵌入式硬件·学习·fpga开发·以太网
cozil44 分钟前
记录磊科B39路由器跨域组网遇到的问题
网络·智能路由器·跨域组网
LCG元1 小时前
性能排查必看!当Linux服务器CPU/内存飙高,如何快速定位并"干掉"罪魁祸首进程?
linux·后端
路由侠内网穿透1 小时前
本地部署开源数据分析平台 Elastic Stack 并实现外部访问( Windows 版本)
运维·服务器·网络·windows·开源·jenkins
FreeBuf_2 小时前
AWS服务大规模中断,基础设施故障影响全球企业
网络·数据库·aws
王道长服务器 | 亚马逊云2 小时前
AWS CloudFormation —— 自动化部署的“云中脚本大师”
运维·服务器·网络·自动化·云计算·aws