HTTP协议格式、URL格式及URL encode

简介: HTTP协议格式、URL格式及URL encode

前言


我们在查看http请求/响应的时候,可以用Fiddler抓包工具。Fiddler抓包:下载、安装及使用_crazy_xieyi的博客-CSDN博客


一、请求格式(Request)


首行:方法 URL 版本号


请求头:包含了若干个键值对,每一个键值对占一行,键和值之间使用 冒号+空格 分割


空行:作为请求头的结束标记


请求正文:有的有正文,有的没有正文(可有可无)


HTTP请求是一个“行文本”,一行一行的组织数据,每一行都有特定的含义。


1.首行


1667911496049.jpg


2.首部(请求头)Header


header这里就是一堆键值对,键值对与键值对之间,使用 换行 来分割;键和值之间,使用 冒号+空格 来分割;header中具体有多少行是不固定的,具体是使用 空行 来作为header的结束标记。

1667911524282.jpg


二、响应格式(Response)


首行:版本号 状态码 状态码描述


响应头:包含了若干个键值对,每一个键值对占一行,键和值之间使用 冒号+空格 分割


空行: 作为响应头的结束标记


响应正文: 有的响应有正文,有的则没有,一种常见的格式就是HTML,当然这里具体格式要看程序猿自己是怎么写的


1.首行


1667911560065.jpg


2.响应头


包含了若干个键值对,每一个键值对占一行,键和值之间使用 冒号+空格 分割

1667911580575.jpg


三、HTTP协议格式总结


1667911601024.jpg


为什么HTTP报文中要存在“空行”?


因为HTTP协议格式并没有规定报头部分的键值对有多少个,空行就相当于是报头的结束标记。


而且HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有空行存在,就会存在“粘包问题”。        


四、URL格式  &  URL encode


URL就是我们平时俗称的“网址”。


URL 的详细规则由因特网标准 RFC1738 进行了约定 .(https://datatracker.ietf.org/doc/html/rfc1738 )

URL格式:


1667911634985.jpg


1. 协议名称:http://


2.服务器地址:可以是域名,也可以是IP


3.端口号:可以省略,不写端口号,浏览器在构造请求的时候会自动加上端口号,对于HTTP是80,HTTPS是443。


4.路径:描述了要访问服务器上具体哪个资源


5.查询字符串:这里是程序员自己定义的一组键值对,从浏览器传递给服务器,查询字符串是以 ?开头的,然后键值对与键值对之间使用 & 来分割,键和值之间用等号来连接。


6.片段标识符:定位一个网页内部的一个位置的。

1667911646588.jpg

但是,这些都不是必须的:


1667911657478.jpg


URL encode

像 / ? : 等这样的字符 , 已经被 url 当做特殊意义理解了, 因此这些字符不能随意出现。

比如 , 某个参数中需要带有这些特殊字符 , 就必须先对特殊字符进行转义。

转义的规则如下 : 将需要转码的字符转为 16 进制,然后从右到左,取 4 位 ( 不足 4 位直接处理 ) ,每 2 位做一位,前面加上% ,编码成 %XY 格式。

UrlEncode编码和UrlDecode解码-在线URL编码解码工具

1667911424275.jpg

1667911432927.jpg

相关文章
|
2月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
174 7
|
3天前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
Web 性能优化|了解 HTTP 协议后才能理解的预加载
|
8天前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验
56 28
|
7天前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
108 25
|
10天前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
138 18
|
30天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
73 15
|
25天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
27天前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
2月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
4月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
68 0