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加载自定义图片数据集进行分类训练的例子。 我们自己创建的数据集…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...