【HTTP】认识 URL 和 URL encode

文章目录

  • 认识 URL
  • URL 基本格式
    • **带层次的文件路径**
    • **查询字符串**
    • **片段标识符**
  • URL encode

认识 URL

计算机中非常重要的概念,并不仅仅是在 HTTP 中使用。用来描述一个网络资源所处的位置,全称“唯一资源定位符

  • URI 是“唯一资源标识符
  • 严格的说 URI 的范围比 URL 更广一些

标识一个变量的身份,可以使用变量的地址(C 语言),也可以使用变量的 hashcodeJava
标识身份就相当于是 URI 这样的东西;我们使用地址,就相当于是 URL(地址也可以起到标识身份的效果)

URL 基本格式

https://www.sogou.com/ 就是一个最简单的 URL

  • https://,协议的名称
  • www.sogou.com,域名

image.png


image.png

  • 登录信息写在这里不太安全,现在都是通过“单独的登录界面”进行身份验证
  • 这里的域名,也可以是 IP 地址(域名和 IP 地址可以互相转换的)
  • 这里的端口号,代表你要访问服务器的那个端口。当前服务器上会有很多程序,这些程序我们需要进行区分
    • 如果 URL 中不带端口号,浏览器就会默认给一个端口(服务器的端口,不是客户端的,也就不是系统随机分配的那个)。此处用什么端口作为默认值取决于协议:http==>80https==>443

带层次的文件路径

  • URL 代表的是网络上的资源位置,你就要知道
    1. 通过 IP 地址知道服务器在哪
    2. 通过端口号知道程序是哪个
    3. 通过路径知道是访问哪个资源
      这里可能会对应一个真实的硬盘文件,也可能会对应一个虚拟的文件

查询字符串

  • 是针对请求的内容做的补充说明
  • 是客户端给服务器传递信息的重要途径
  • 这里的组织方式是按照键值对的方式来组织的
    • 这里的键值对的内容,就是程序员自定义的,没有标准规定
    • 所以一般查询字符串具体是什么意思,作为外人无法得知,必须是写这个代码的程序猿才知道

片段标识符

  • 用来标识当前页面的某个部分。通过不同的片段标识可以完成页面的跳转(目录定位跳转)

结合上述 IP 地址、端口号、路径、查询字符串,就可以描述出一个网络资源了

  • IP 地址==>确定服务器是哪个
  • 端口号==>确定程序是哪个
  • 路径==>确定访问的资源是哪个
  • 查询字符串==>补充说明

URL encode

query string 里面是自定义的键值对。在 URL 中,本身有一些特殊符号具有特定的含义(/:?@…)

如果 URLquery string 中也包含同样的符号怎么办?

  • 如果直接写进去,就可能会导致服务器/浏览器解析失败
    靠谱的方法就是对上述符号进行"转义",转义的过程就叫“URL encode

不仅针对标点符号,还要对汉字进行转义。因为汉字的 UTF8/GBK 等编码值其中可能某个字节就恰好和某个符号的 ASCII 码一致,此时就麻烦了

当你在浏览器中搜索 C++的时候,+就会被转义成%2Bimage.png

  • + 的 ASCII 拿出来,使用十六进制表示,并且加上 %

当你在浏览器中搜索“蛋糕”的时候,“蛋糕”就会被转义成%E8%9B%8B%E7%B3%95 image.png|413

  • 但是在浏览器中看到的还是“蛋糕”,只有复制出去了才能看到。因为浏览器自动帮你转换了
  • 将““和““的 UTF8 编码进行十六进制表示,并且在前面加上%image.png|563

这里的 URL encode 是非常重要的。在实际开发中,当要构造一个 URL,尤其是 URLquery string 中要包含中文的时候,务必要进行编码!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac命令行分卷压缩与合并

对当前目录内的文件压缩的同时分卷 //语法:zip -r -s 1m 压缩文件名.zip 当前路径 zip -r -s 1m split.zip . //解压 zip -s 0 split.zip --out unsplit.zip unzip unsplit.zip 将一个zip文件进行分卷 一个900k的压缩包名为hello.zip,将其分割为每500K一个zip zip - hello.…

Microsoft Edge 五个好用的插件

🐣个人主页 可惜已不在 🐤这篇在这个专栏 插件_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 Microsoft Edge 一.安装游览器 ​编辑 二.找到插件商店 1.打开游览器后,点击右上角的设置&#…

MyBatis 集成spring框架

MyBatis 集成 Spring 框架详解 MyBatis 是一个优秀的持久层框架,它通过简单、灵活的 SQL 语句与 Java 对象进行映射,而 Spring 是 Java 生态系统中最流行的框架之一,广泛用于依赖注入(DI)、面向切面编程(A…

第十四章:html和css做一个心在跳动,为你而动的表白动画

💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-19

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-19 1. SAM4MLLM: Enhance Multi-Modal Large Language Model for Referring Expression Segmentation Authors: Yi-Chia Chen, Wei-Hua Li, Cheng Sun, Yu-Chiang Frank Wang, Chu-Song Chen SAM4MLLM: 增强多模…

防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

实验要求 根据实验要求配置防火墙: 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户,反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一:配置各个终端、防火墙端口IP地址 终端以服务器为例&#xff…

离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中的多维应用

使用 TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代 OGG, Kettle 等同步工具,以及基于 Kafka 的 ETL 解决方案,「CDC 流处理 数据集成」组合拳,加速仓内数据流转,帮助企业…

安装MySQL驱动程序笔记一

安装MySQL驱动程序到计算机上,主要依赖于你使用的编程语言和开发环境。以下是一个通用的安装步骤,特别是针对Java环境,因为MySQL Connector/J是最常用的MySQL JDBC驱动程序。 1. 下载MySQL驱动程序 首先,你需要从MySQL官网&…

Android IME输入法启动显示隐藏流程梳理

阅读Android AOSP 12版本代码,对输入法IME整体框架模块进行学习梳理,内容包含输入法框架三部分IMM、IMMS、IMS的启动流程、点击弹出流程、显示/隐藏流程,以及常见问题和调试技巧。 1. IME整体框架​​​​​​​ IME整体分为三个部分&#xf…

股指期货的持仓量指标如何分析?有哪些作用?

股指期货市的持仓量是一个极其重要的指标,它就像市场的“晴雨表”,能反映出投资者的信心、市场的热度以及潜在的趋势。下面,我们就用大白话的方式来详细解读一下股指期货持仓量指标的分析方法及其作用。 一、什么是股指期货持仓量&#xff1…

WPF 自定义路由事件

WPF 自定义路由事件 一、自定义路由事件步骤 ① 注册路由事件    ② 为路由事件添加 CLR 事件包装器    ③ 创建可激发路由事件的方法 二、注册路由事件 EventManager.RegisterRoutedEvent(String, RoutingStrategy, Type, Type)     作用:将新的路由事件…

用CPU训练机器学习模型

人工智能最近的成功通常归功于 GPU 的出现和发展。GPU 的架构通常包括数千个多处理器、高速内存、专用张量核心等,特别适合满足人工智能/机器学习工作负载的密集需求。 不幸的是,人工智能开发的快速增长导致对 GPU 的需求激增,使得 GPU 难以…

Writeset

优质博文:IT-BLOG-CN MySQL的WriteSet功能主要用于增强复制的并发性和一致性,特别是在主从复制环境中。WriteSet是MySQL 5.7引入的一个特性,主要用于解决复制过程中可能出现的写冲突问题。 MySQL并行复制目前经历过三个比较关键的时间结点“…

技术周刊 | TS 5.6、Chrome DevTools 性能面板上新、Vite 6 Beta、Fastify v5、HTTP 新方法 Query

增长能力,就是持续做出正确决定的能力。 大家好,我是童欧巴,欢迎来到第 128 期技术周刊。 资讯 TypeScript 5.6 TypeScript 5.6 如期发布。 Chrome DevTools 发布全新性能功能 Chrome DevTools 的性能面板上新测试,包括 Core…

ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

目录 简介读取ESP32/ESP8266接收方Receiver的MAC地址ESP32发送方Sender程序ESP32/ESP8266接收方Receiver程序ESP-NOW通信验证总结 简介 本实验通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数据。 读取ESP32/ESP8266接收方Receiver的MAC地址 读取…

Nginx反向代理出现502 Bad Gateway问题的解决方案

🎉 前言 前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。 🎉 问题描述 在代理的遇到过很多错误码,其中出现频率最高的就是502&#x…

LabVIEW提高开发效率技巧----代码规范与文档记录

良好的代码规范与文档记录在LabVIEW开发中至关重要。它不仅能够大幅提升开发效率,还为后续的维护和项目交接提供便利。下面将从命名规则、注释标准、功能说明等多个角度,介绍如何通过规范化开发提高项目的可维护性与协作性。 1. 保持一致的命名规则 在L…

set的相关函数(3)

3.删除 //删除 /* int main() {set<int> s;s.insert({ 2,4,5,2,6,8,10,15 });for (auto e : s){cout << e << " ";}cout << endl;//删除最小的元素就删除排序后的首元素s.erase(s.begin());for (auto e : s){cout << e << "…

Flutter局域网广播(UDP通信)与TCP通信

前言 现在有一个需求&#xff0c;手机和ESP32通过WIFI进行通信。流程如下&#xff1a; 手机创建TCP服务器手机向192.168.0.255的1002端口广播自己的ip地址以及TCP服务器的端口号ESP32监听到1002的广播内容后&#xff0c;连接手机的TCP服务器。最后就是ESP32硬件和TCP服务器进…

双击热备 Electron网页客户端

安装流程&#xff1a; 1.下载node.js安装包进行安装 2.点击Next; 3.勾选&#xff0c;点击Next; 4.选择安装目录 5.选择Online 模式 6.下一步执行安装 。 7.运行cmd,执行命令 path 和 node --version&#xff0c;查看配置路径和版本 8.Goland安装插件node.js 9.配置运行…