首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一篇文档搞定HTTP

一篇文档搞定HTTP

作者头像
用户11319080
发布2025-05-29 08:46:37
发布2025-05-29 08:46:37
19000
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

什么是HTTP

HTTP是基于TCP协议的一种应用层协议。全称是超文本传输协议,为什么是超文本传输协议,当我们向浏览器发送一个HTTP请求后,HTTP响应的不仅仅是文本文件也可以是HTML,CSS,JS文件,也可以是二进制的图片音频文件。

请求图形化:

HTTP请求格式

我们先用fiddler抓一个包

HTTP请求: 首行:访问方式+URL+协议/协议版本 Header:key:value形式表示,每组用会车行(\n)分隔,遇到空行表示Header结束。 空行:主要用来划分header和body的 body:可以为空,如果body有值Header中会有一个Content-length属性表示body的长度

HTTP响应: 首行:协议/协议版本+状态码 header:key:val形式表示,每组用会车行(\n)分隔,遇到空行表示Header结束。 空行:主要用来划分header和body的 body:可以为空,如果body有值Header中会有一个Content-length属性表示body的长度,如果是html页面内容就是在Body中 协议总结:

空行的作用:因为header中具体有多少个键值对是不固定的,所以空行是来当作报头的结束标记,用来分割body体和header体的,HTTP是基于TCP实现的,TCP是面向字节流的,加这个空行也是为了防止粘包问题。

认识URL

协议方案名:协议HTTP协议真实一个典型的协议 登录信息:现在基本已经URL不用了 域名:域名其实对应的就是目标服务器的IP,域名会根据DNS系统解析成一个具体的IP地址 端⼝号: 上⾯的 URL 中端⼝号被省略了. 当端⼝号省略的时候, 浏览器会根据协议类型⾃动决定使⽤哪个端⼝. 例如 http 协议默认使⽤ 80 端⼝, https 协议默认使⽤ 443 端⼝. 层次文件夹:当找到这个服务器后,对应的资源文件夹目录。 查询字符串:帮助我们定位具体返回那部分内容。

访问的方法种类。

其中get和post是最常用的两种方法。 get一般用于获取服务器资源的请求方法,比如获取一个页面内容,获取一则新闻内容。 post一般用于登录请求,把密码和账号输入后,传给服务器,进行校验登录。

post方法和get方法区别: get一般用于获取数据如查询信息图片等post一般用于提交数据如登录。

get方法的body一般为空,需要传递的数据通过query string(查询字符串),post的query string一般为空,需要传递数据通过body来传递。

get是可以被缓存的,post一般不能缓存。 get请求一般是幂等的,post一般是不幂等的, 这个幂等可以这样理解,我们在浏览器一种搜相同的关键词,他返回的页面始终的唯一的,保证着稳定。

get对于登录这类请求可能没有post安全,因为是通过查询字符串传递的,就可能造成密码的泄露,但其实到底会不会产生安全问题,还是取决于前端对于这些敏感数据是否加密。

其他方法: put和post其实相似,只不过具有幂等性,一般用于更新 delete:一般用于删除服务器指定资源 options:返回服务器所支持的方式 head:类似get,只响应不反回体,只返回响应头 trace :回显服务器收到请求,测试时候用这个 connect 预留,暂时无法使用

这些方法可以用ajax构建,也可以用后端的注解表示,也可以html构造

Header

Host:服务器地址和端口 Content-Length:body数据的长度 Content-type:请求body的数据格式 常见:application/x-www-form-urlencoded: form表单提交的数据格式. 此时 body 的格式形如:

代码语言:javascript
代码运行次数:0
运行
复制
title=test&content=hello

multipart/form-data: form 表单提交的数据格式(在 form 标签中加上 enctyped=“multipart/form-data” . 通常⽤于提交图⽚/⽂件. application/json: 数据为 json 格式. body 格式形如:

代码语言:javascript
代码运行次数:0
运行
复制
{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16

User-Agent (简称 UA):表示浏览器,操作系统的属性:

代码语言:javascript
代码运行次数:0
运行
复制
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0
Accept: */*

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

Referer:表示这个页面是从那个页面跳转过来的。

Cookie:Cookie中存储一个字符串,用于用户的身份标识。类似于区医院看病,你挂号后,给你发一个电子卡,到每个门诊通过这个电子卡标识你已经挂号过了,不用再去问你到底有没有挂号。或者,你第一次登录时候,登录成功,服务器会存储一个cookie标识你已经登录过了,在这个cookie过期之前,你再次访问这个网站,就无需登录。

Body体

body体和header的Content-type有着密切的关系,body主要有三种格式,和COntent-type 一一对应 常见:application/x-www-form-urlencoded: form表单提交的数据格式. 此时 body 的格式形如:

代码语言:javascript
代码运行次数:0
运行
复制
title=test&content=hello

multipart/form-data: form 表单提交的数据格式(在 form 标签中加上 enctyped=“multipart/form-data” . 通常⽤于提交图⽚/⽂件. application/json: 数据为 json 格式. body 格式形如:

代码语言:javascript
代码运行次数:0
运行
复制
{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16

HTTP状态码

什么是状态码? 状态码就是规定的数字,主要是起标识作用,告诉客户端或者服务端,到底是访问成功还是访问失败,或者其他情况。

访问成功的状态码:200 ok 未能找到URl标识的地址,或者不存在了的状态码:404 访问被拒绝的状态码:403 访问方法不允许:405 服务器内部错误:500 服务器过载,导致超时:504 临时重定向:302 永久重定向:301 重定向:相当于一个跳转业务,你通过原有的URL访问,但服务器接收到后,会给你跳转到一个新的URL里面,比如登陆成功后自动跳转到主页,临时重定向和永久重定向区别,就是一个可能是因为节日活动,从而临时改动的跳转,活动结束后,又恢复到原样,而永久重定向是以后都这样。

状态码小结:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是HTTP
  • HTTP请求格式
    • 认识URL
  • 访问的方法种类。
  • Header
  • Body体
  • HTTP状态码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档