码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • HTTP协议格式、URL格式及URL encode


    系列文章目录

    Fiddler抓包:下载、安装及使用_crazy_xieyi的博客-CSDN博客


    文章目录

    • 一、请求格式(Request)
    • 二、响应格式(Response)
    • 三、HTTP协议格式总结
    • 四、URL格式  &  URL encode

    前言

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

    一、请求格式(Request)

    首行:方法 URL 版本号

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

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

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


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

    1.首行

    27f0dbf08715452caa84e6cf7296a694.png

     2.首部(请求头)Header

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

    a23777a5f2054b9c84b0f9b979e14062.png

    二、响应格式(Response)

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

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

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

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


    1.首行

    f27f37c417f64644b0f97c17af352704.png

     2.响应头

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

    858707c3c5f1436ab2baea8541685100.png

    三、HTTP协议格式总结

    ed346468d477456f8943164de176dbef.png

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

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

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

    四、URL格式  &  URL encode

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

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

    URL格式:

    cfad3daf904c4ccd923b1c8eb8c1481a.png

    1. 协议名称:http://

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

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

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

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

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

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

    ab7cbb6ff46c44edb4f2a58a46e28aec.png

     

    URL encode

    像 / ? : 等这样的字符, 已经被url当做特殊意义理解了,因此这些字符不能随意出现。
     
    比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。
     
    转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。
     
    UrlEncode编码和UrlDecode解码-在线URL编码解码工具
     
     

    0f5d95c9d44d4205a300bdbe80d1f1bc.png

     a2326111570e4d63b6ade6070e935158.png

     

     

     


     

     

  • 相关阅读:
    c语言指针加减法
    spring boot 集成 RedisSearch 和 RedisJSON
    图片识别 python 神经网络,人工神经网络图像识别
    基于微服务SDK框架与JavaAgent技术,低成本助力应用高效发布
    Go中为什么json.Unmarshal为什么需要指向map的指针?
    【操作系统】文件管理(二)—— 文件的逻辑结构
    基于MSTP+VRRP的高可用企业网络规划与设计
    DPDK系列之三十内存中的环形队列
    离线数仓(8):ODS层实现之导入流量日志
    STC51单片机学习笔记8——stc12c56 串口显示AD(多路ad)
  • 原文地址:https://blog.csdn.net/crazy_xieyi/article/details/126728106
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号