HTTP URL 详解
概述
URL 提供了一种定位因特网上任意资源的手段,大多数 URL 语法都由以下九个结构的通用格式组成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
- 方案:访问服务器以获取资源时要使用哪种协议
- 用户:某些方案访问资源时需要的用户名
- 密码:用户名后面可能要包含的密码,中间由冒号分隔
- 主机:资源宿主服务器的主机名或 IP 地址
- 端口:资源宿主服务器正在监听的踹口号,很多方案都有默认端口号(HTTP 的默认端口号为 80)
- 路径:服务器上资源的本地名,由一个斜杠(/)将其与前面的 URL 组件分隔开来
- 参数:指定输入参数,参数为键值对,URL 中可以包含多个参数,使用分号分隔
- 查询:同样用来指定输入参数,参数为键值对,URL 中可以包含多个参数,使用 & 分隔
- 片段:一小片或一部分资源的名字,引用对象时,不会将 frag 字段传送给服务器,这个字段是在客户端内部使用的
方案
方案规定如何访问指定资源的资源标识符,常用的方案有:
- HTTP:文本传输协议,除了传递普通文本,还可以传递文件流或者进制编码等信息,是目前最常用的 web 传输
- HTTPS:基于 SSL 加密的 HTTP 传输协议,比 HTTP 更加的安全
- FTP:文件传输协议,一般用来实现资源文件在服务器上的上传下载
用户名和密码
有些服务器都要求输入用户名和密码才会允许用户访问数据,FTP 服务器就是一个常见的例子:
ftp://ftp.prep.ai.mit.edulpub/gnu
第一个例子没有用户或密码组件,只有标准的方案、主机和路径,这时浏览器通常会插入一个默认的用户名和密码,用户名一般是 anonymous(匿名用户),密码则根据浏览器而异
ftp://joe:joespasswd@ftp.prep.ai.mit.edulpub/gnu
第二个例子指定了用户名(joe)和密码(joespasswd)
主机与端口号
主机组件标识了因特网上能够访问资源的宿主机器,可以用主机名(www.joes-hardware.com)或者 IP 地址来表示。端口组件标识了服务器正在监听的网络端口,对下层使用了 TCP 协议的 HTTP 来说,默认端口号为 80
路径
路径组件说明资源位于服务器的什么地方,路径通常很像一个分级的文件系统路径,比如:http://www.joes-hardware.com:80/seasonal/index-fall.html
参数
对很多方案来说,只有简单的主机名和路径是不够的,除了服务器正在监听的端口,以及是否能够通过用户名和密码访问资源外,很多协议都还需要更多的信息才能工作
为了向应用程序提供它们所需的输入参数,以便正确地与服务器进行交互,URL 中有一个参数组件。参数由键值对组成,使用 ; 将其与 URL 的其余部分以及其他参数分隔开,为应用程序提供了访问资源所需的所有附加信息,比如:
ftp://prep.ai.mit.edu/pub/gnu;type=d
在这个例子中,有一个参数 type=d,参数名为 type,值为 d
如前所述,HTTP URL 的路径组件可以分成若干路径段,每段都可以有自己的参数,比如:
http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
这个例子就有两个路径段,hammers 和 index.html,hammers路径段有参数 sale,其值为 false,index.html 段有参数 graphics,其值为 true
查询
很多资源,比如数据库服务,都可以限定查询条件来缩小所请求资源的范围。比如,数据库维护着一张货物表,我们希望找到编号 12731 的货物,就可以使用如下 URL 来查询
http://www.joes-hardware.com/inventory-check?id=12731
多个参数之间可以用 & 分隔
http://www.joes-hardware.com/inventory-check?id=12731&color=blue
片段
有些资源类型,比如 HTML,除了资源级之外,还可以做进一步的划分。比如,对一个带有章节的大型文本文档来说,资源的 URL 会指向整个文本文档,但理想的情况是,能够指定资源中的那些章节
为了引用资源的一个片段,URL 支持使用片段(frag)组件来表示资源的一个片段。比如,URL 可以指向 HTML 文档中一个特定的图片或小节。
片段挂在 URL 的右手边,最前面有一个字符 #。比如:http://www.joes-hardware.com/tools.html#drills
在这个例子中,片段 drills 引用了页面/tools.html 中的一个部分,这部分的名字叫做 drills
HTTP 服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源
URL 编码
一般来说,URL 只能使用英文字母、阿拉伯数字和某些标点符号。如果 URL 带有中文或者特殊字符时,就需要对 URL 进行编码,使用安全字符去表示那些不安全的字符
URL 只允许使用 ASCII 字符集可以显示的字符,比如英文字母、数字、和 - _ . ~ ! * 这六个特殊字符。当在 URL 中使用不属于 ASCII 字符集的字符,如中文,空格,就要使用特殊的符号对该字符进行编码,比如空格需要用 %20 来表示
另外,还需要对 URL 中的部分保留字符和不安全字符进行编码,因为这些字符有可能产生歧义,造成服务器解析错误,比如 URL 查询参数中包含了 & 或者 %
保留字符:? = & / . ... # @ $ + ; %
部分不安全字符:[ ] < > " " { } | \ ^ * · ‘ ’
相关文章:
HTTP URL 详解
概述 URL 提供了一种定位因特网上任意资源的手段,大多数 URL 语法都由以下九个结构的通用格式组成: <scheme>://<user>:<password><host>:<port>/<path>;<params>?<query>#<frag> 方案&#…...
Python 原生爬虫
Python 描述代码 描述 爬网站的页面配合正则表达式设置定时任务 仅学习参考,切勿使用其他用途 代码 import re import schedule import timefrom urllib.request import urlopenclass Spider:def __init__(self):# 初始化代码...pass# self.start_schedule()# 需要…...
数据结构---经典链表OJ
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...
HTML_CSS学习:CSS像素与颜色
一、像素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>像素</title> </head><style>.atguigu1{/*单位可以是cm,但不能是m,dm*/width: 1cm;height: 1cm;background-c…...
华为交换机配置导出备份python脚本
一、脚本编写思路 (一)针对设备型号 主要针对华为(Huawei)和华三(H3C)交换机设备的配置备份 (二)导出前预处理 1.在配置导出前,自动打开crt软件或者MobaXterm软件&am…...
DS:时间复杂度和空间复杂度
欢迎各位来到 Harper.Lee 的学习世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦! 本片博客主要介绍的是数据结构中关于算法的时间复杂度和空间复杂度的概念。 一、算法 1.1 什么是算法? 算法(Alg…...
AI跟踪报道第41期-新加坡内哥谈技术-本周AI新闻:本周Al新闻: 准备好了吗?事情即将変得瘋狂
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Go 之 interface接口理解
go语言并没有面向对象的相关概念,go语言提到的接口和java、c等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。 interface是go语言的一大…...
简约在线生成短网址系统源码 短链防红域名系统 带后台
简约在线生成短网址系统源码 短链防红域名系统 带后台 安装教程:访问 http://你的域名/install 进行安装 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/...
设置默认表空间和重命名
目录 设置默认表空间 创建的临时表空间 tspace4 修改为默认临时表空间 创建的永久性表空间 tspace3 修改为默认永久表空间 重命名表空间 将表空间 tspace3 修改为 tspace3_1 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/13520…...
Hive大表join大表如何调优
目录 一、调优思路1、SQL优化1.1 大小表join1.2 大大表join 2、insert into替换union all3、排序order by换位sort by4、并行执行5、数据倾斜优化6、小文件优化 二、实战2.1 场景2.2 限制所需的字段,间接mapjoin2.2 解决异常值倾斜,如NULL加随机数打散2.…...
SAF文件选择、谷歌PhotoPicker图片视频选择与真实路径转换
一、构建选择文件与回调方法 //文件选择回调ActivityResultLauncher<String[]> pickFile registerForActivityResult(new ActivityResultContracts.OpenDocument(), uri->{if (uri ! null) {Log.e("cxy", "返回的uri:" uri);Log.e("cxy&q…...
java可变参数
前言 我们虽然能够用重载实现,但多个参数无法弹性匹配 代码 class mycalculator{//下面的四个calculate方法构成了重载//计算2个数的和,3个数的和,4,5,6个数的和// public void calculate(int n1){// System.out.…...
Flutter 中的 Expanded 小部件:全面指南
Flutter 中的 Expanded 小部件:全面指南 在 Flutter 中,Expanded 是一个用于控制子控件占据可用空间的布局小部件,通常与 Row、Column 或 Flex 等父级布局小部件一起使用。Expanded 允许你创建灵活的布局,其中子控件可以按照指定…...
[Kubernetes] KubeKey 部署 K8s v1.28.8
文章目录 1.K8s 部署方式2.操作系统基础配置3.安装部署 K8s4.验证 K8s 集群5.部署测试资源 1.K8s 部署方式 kubeadm: kubekey, sealos, kubespray二进制: kubeaszrancher 2.操作系统基础配置 主机名内网IP外网IPmaster192.168.66.2139.198.9.7node1192.168.66.3139.198.40.17…...
C# 与 Qt 的对比分析
C# 与 Qt 的对比分析 目录 C# 与 Qt 的对比分析 1. 语言特性 2. 开发环境 3. 框架和库 4. 用户界面设计 5. 企业级应用 6. 性能考量 在软件开发领域,C# 和 Qt 是两种常用的技术栈,它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深…...
MapReduce | 二次排序
1.需求 主播数据--按照观众人数降序排序,如果观众人数相同,按照直播时长降序 # 案例数据 用户id 观众人数 直播时长 团团 300 1000 小黑 200 2000 哦吼 400 7000 卢本伟 100 6000 八戒 250 5000 悟空 100 4000 唐僧 100 3000 # 期望结果 哦吼 4…...
Java后端初始化项目(项目模板)
介绍 emmmm,最近看了一些网络资料,也是心血来潮,想自己手工搭建一个java后端的初始化项目模板来简化一下开发,也就发一个模板的具体制作流程,(一步一步搭建,从易到难) okÿ…...
electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)
全局 stroe 添加 mutations 状态同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…...
自定义数据集图像分类实现
模型训练 要使用自己的图片分类数据集进行训练,这意味着数据集应该包含一个目录,其中每个子目录代表一个类别,子目录中包含该类别的所有图片。以下是一个使用Keras和TensorFlow加载自定义图片数据集进行分类训练的例子。 我们自己创建的数据集…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...
