DATA URL:嵌入 URL 中的数据资源

news2024/9/29 13:15:08

文章目录

  • 参考
  • 环境
  • DATA URL
      • 概念
      • 结构
      • DATA URL 的优缺点
          • 优点
          • 缺点
  • DATA URL 与图片
      • 获取图片的 Base64 编码结果
      • 在 HTML 中应用 DATA URL 以展示图片
  • DATA URL 与 allow_url_fopen 及 allow_url_include 配置项
      • allow_url_fopen 配置项
      • allow_url_include 配置项
      • allow_url_fopen 与 allow_url_include
          • 区别
          • 联系
          • 默认配置
      • DATA URL 与 allow_url_fopen 及 allow_url_inlcude

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
MDN Web DocsData URL
PHP 官方filesystem.configuration.php
PHP 官方PHP Manual

环境

项目描述
PHP5.5.05.6.87.0.07.2.57.4.98.0.08.2.9
PHP 编辑器PhpStorm 2023.1.1(专业版)

DATA URL

概念

DATA URL 是一种 URL 方案,它 允许我们在 URL 中直接嵌入数据,而不是指向数据所在的位置DATA URL 在网页开发中尤其有用,因为它允许我们将小型数据(例如小图标或简短文本)直接嵌入到 HTML、CSS 或 JavaScript 文件中,而不需要通过 网络连接 从服务器中获取资源。

结构

DATA URI 的一般结构如下:

data:[<mime type>][;charset=<charset>][;base64],<encoded data>

其中:

项目描述
<mime type>DATA URL 携带数据的 MIME 类型。例如:image/pngtext/plain 等。
<charset>当 DATA URL 携带数据的数据类型是文本类型时,可以指定文本所使用的字符集。若未指定文本类型使用的编码方式,默认使用 UTF-8 字符集编码。
base64标识 DATA URL 的携带数据是使用 Base64 进行编码的。
<encoded data>DATA URL 的携带数据,需要使用 DATA URL 声明的编码方式进行编码。

举个栗子

  1. 一个简单的 DATA URI,包含纯文本:

    data:text/plain;charset=UTF-8,Hello%20World!
    
  2. 使用 Base64 编码的 PNG 图片:

    data:image/png;base64,iVBORw...(此处为图片的实际编码数据)
    

DATA URL 的优缺点

优点
  1. 减少 HTTP 请求
    小尺寸图片、文本等数据 直接嵌入在 URL 中,不需要通过网络连接从服务器中获取。有利于 降低服务器压力,提高 HTTP 请求的效率(HTTP 连接的建立与维护所耗费的资源多用于大型资源),从而提高网页的加载速度。
  2. 离线访问
    通过在 URL 中内联资源可以使网页变得 更加独立,能够在离线情况下访问,而不依赖于外部资源的可用性。
缺点
  1. 占用空间增大
    Base64 编码使用的字符集是 URL 兼容的,这意味着它不包含 URL 特殊字符,如问号、斜杠、等号等。因此图片等二进制资源常使用 Base64 进行编码以方便资源的传输。但 Base64 编码通常会导致数据占用空间增大约 33%,这意味着资源在 DATA URL 中占用的内存空间会比原始资源更大,可能导致性能下降(对于小型图片,将其内嵌至 URL 中能减少 HTTP 请求,提高页面加载速度)
  2. 无法被缓存
    如果多个页面或资源使用 相同的数据,使用 DATA URL 将导致数据在每个页面或资源中都被重复,而不是被缓存。
  3. 可读性和管理
    大量的 DATA URL 可能会 导致源代码难以阅读和管理

DATA URL 与图片

获取图片的 Base64 编码结果

我们将通过使用 PHP 来获取图片的 Base64 编码结果。在下述示例中,我们使用 file_get_contents() 函数获取图片的二进制内容,再通过 base64_encode() 函数将二进制内容编码为 Base64 文本。

<?php


# 获取同目录下的 beer.png 图片的二进制数据
$binary_data = file_get_contents('./beer.png');
# 获取 beer.png 的大小
var_dump(strlen($binary_data));

# 尝试使用 Base64 将二进制数据进行编码
$result = base64_encode($binary_data);
# 将 Base64 编码结果进行输出
var_dump($result);

执行效果

由上述示例的执行结果可知,原图片所占据空间大小为 4492 字节,在通过 Base64 进行编码后,占据空间为 5992 字节。图片在进行 Base64 编码前与编码后相差 1500 字节,编码后图片约为原始图片的 133%

int(4492)
string(5992) "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"

在 HTML 中应用 DATA URL 以展示图片

在 HTML 中,img 标签用于展示图片资源。在 img 标签中,src 属性用于指定图片资源的 来源(通常是指向服务器本地的某一图片资源,在浏览器加载到此时,需要向服务器请求该资源)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DATA URL</title>
</head>
<body>
    <!--  通过使用 DATA URL 来展示图片  -->
    <img alt="Beer" src="data:image/png;base64,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"/>
</body>
</html>

执行效果

访问上述 HTML 页面,得到如下界面:

DATA URL 与 allow_url_fopen 及 allow_url_include 配置项

allow_url_fopen 配置项

allow_url_fopen 是 PHP 中的一个配置选项,它决定了 PHP 是否能够通过 URL (而非本地文件路径) 来打开文件。这个配置选项的值会影响到一些 PHP 中与文件操作相关的函数的行为,例如 fopen()file_get_contents() 。具体来说,当 allow_url_fopen 被设置为 On(开启)时,这些函数可以用来 读取写入 远程文件。而当该配置项被设置为 Off(关闭)时,这些函数 只能用于操作本地文件

allow_url_include 配置项

allow_url_include 是 PHP 的一个配置指令,与 allow_url_fopen 类似,但 allow_url_include 配置专门针对 PHP 的 includeinclude_oncerequirerequire_once 语句。当 allow_url_include 被设置为 On 时,PHP 允许通过 URL 的形式,从远程服务器 包含和执行 PHP 文件。

allow_url_fopen 与 allow_url_include

区别

在开启 allow_url_fopen 配置项后,PHP 仅能够对远程文件进行读写等文件操作
在开启 allow_url_include 配置项后,PHP 将能够通过 include 等函数 将远程文件包含至当前文件并将其作为 PHP 代码进行执行

举个栗子

<?php


$target_url = 'http://192.168.1.8/target';

var_dump(file_get_contents($target_url));
include($target_url);

执行效果

在执行上述示例代码前,请将 allow_url_fopenallow_url_include 配置项开启。
由于被 allow_url_fopen 配置项影响的 file_get_contents() 函数仅能够对远程文件执行读写等文件操作,故 http://192.168.1.8/target 中的代码仅被执行了一次。

由于 allow_url_includePHP7.4.0 版本中已被废弃,故在 PHP8.0.0 版本中执行上述代码时,PHP 将输出 PHP Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0 以表明 PHP 不推荐使用该配置项。

PHP Deprecated:  Directive 'allow_url_include' is deprecated in Unknown on line 0
string(33) "<?php


var_dump('Hello World');
"
string(11) "Hello World"
联系

allow_url_include 的生效依赖于 allow_url_fopen 配置项的开启。具体而言,当 allow_url_includeallow_url_fopen 两个配置项均被开启时,allow_url_include 才能够发挥作用。若仅有 allow_url_include 配置项被开启,则无法发挥 allow_url_include 配置项所起到的功能。

默认配置

PHP5.2 版本开始,allow_url_include 配置项的默认配置均为 Off,而 allow_url_fopen 配置项的默认配置始终为 On
在 PHP 的实际应用中,推荐将 allow_url_includeallow_url_fopen 配置项进行关闭,这两个配置项通常用于从远程服务器 获取和执行文件,但在某些情况下,它们可能会被恶意利用,导致安全漏洞和风险。

DATA URL 与 allow_url_fopen 及 allow_url_inlcude

DATA URL 中的数据被 PHP 认为是远程文件,故在使用 file_get_contentsinclude 等函数时需要注意 PHP 的配置项 allow_url_fopenallow_url_include 的开启情况。

举个栗子

<?php


include('data:text/plain,<?php var_dump("Hello WOrld");');

执行效果

在执行上述示例代码时,仅开启了 allow_url_fopen 配置项。但 includerequire 等函数在处理远程文件时还需要 allow_url_include 配置项的开启。因此,PHP 抛出了如下异常信息。

PHP Warning:  include(): data:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\index.php on line 4
PHP Warning:  include(data:text/plain,<?php var_dump("Hello WOrld");): Failed to open stream: no suitable wrapper could be found in C:\index.php on line 4
PHP Warning:  include(): Failed opening 'data:text/plain,<?php var_dump("Hello WOrld");' for inclusion (include_path='.;C:\php\pear') in C:\index.php on line 4

通过修改 PHP 提供的配置文件 php.iniallow_url_include 配置项开启后,再次执行上述示例代码得到如下内容:

string(11) "Hello WOrld"
PHP Deprecated:  Directive 'allow_url_include' is deprecated in Unknown on line 0

嵌入 DATA URL 中的 PHP 代码被成功执行,故输出了 string(11) "Hello WOrld"

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

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

相关文章

Word中设置粘贴为纯文本的自定义快捷键

1、依次点击左上角 File(文件)->options(选项)-> Customize ribbon(自定义功能区)->Customize (自定义快捷键) 2、选择 All commands(所有命令)->PasteTextOnly(粘贴纯文本)&#xff0c; 在 Press new shortcut key (键入新快捷键)中输入自己喜欢的快捷键&#xff…

华为云云耀云服务器L实例评测|华为云上的CentOS性能监测与调优指南

目录 引言 ​编辑1 性能调优的基本要素 2 性能监控功能 2.1 监控数据指标 2.2 数据历史记录 2.3 多种统计指标 3 性能优化策略 3.1 资源分配 3.2 磁盘性能优化 3.3 网络性能优化 3.4 操作系统参数和内核优化 结论 引言 在云计算时代&#xff0c;性能优化和调优对于…

视觉效果绝佳的制作电子宣传册的网站

随着数字技术与设计理念的融合&#xff0c;电子宣传册不再是平面的文字与图片堆砌&#xff0c;而是通过多媒体元素、动画效果和交互性功能营造出沉浸式的阅读体验。小编向大家推荐一款名为FLBOOK的制作电子宣传册的网站。 首先&#xff0c;打开FLBOOK电子杂志制作网站然后点击模…

长城网络靶场第五题,流量包分析

关卡描述&#xff1a;1.小利访问最频繁的网站是&#xff1f;&#xff08;只填写一级域名&#xff09; 因为是一级域名所以只要 gamersky.com 关卡描述&#xff1a;2.小利的IP是多少&#xff1f; 看数据包很明显 标准答案&#xff1a;192.168.12.126 关卡描述&#xff1a;3.黑…

Win11通过注册表或者kernel32.dll的SetUserGeoName等方式设置国家或地区后重启过一会就自动变回原来的值...

最近同事 panwangvie 尝试通过代码设置国家或地区&#xff0c;尝试过注册表或者kernel32.dll的SetUserGeoName等方式设置&#xff0c;重启过一会就自动变回原来的值 我也尝试了以下方式均不行&#xff1a; 1. 一开始怀疑是自动时钟影响&#xff0c;所以把自动时钟关闭了 2. 然后…

c++桥接模式,中介者模式应用实现状态跳转

上图为例&#xff0c;按上述两种方式实现的模式跳转&#xff0c;如果在原先的三种模式之间再增加多一种模式&#xff0c;就会引起每个模式都会要求改变&#xff0c;并且逻辑混乱&#xff0c;因此更改模式为桥接中介者访问&#xff0c;将抽象和实现分离&#xff0c;实现之间采用…

STM32单片机裸机程序怎么处理大量网络数据?

STM32单片机裸机程序怎么处理大量网络数据? 无论是在中断中处理数据&#xff0c;还是在主循环里处理数据&#xff0c;你用于处理数据的时间是不变的。 你可以算一下&#xff0c;处理数据的时间&#xff08;速率&#xff09;和单片机的处理能力相差有多大&#xff0c;单片机是…

Android原生实现控件圆角方案(API28及以上)

Android控件的圆角效果的实现方式有很多种&#xff0c;这里介绍一下另一种Android原生的圆角实现方案&#xff08;API28及以上&#xff09;。 我们利用ShapeAppearanceModel、MaterialShapeDrawable来实现一个圆角/切角的Button。 实现效果如下图 我们在为控件添加阴影的基础上…

【软考设计师】S01 数据结构 E01 线性结构 P01 线性表

线性表 前言——线性结构线性表线性表的定义线性表的特点线性表的存储结构顺序存储链式存储单链表双向链表循环链表静态链表 前言——线性结构 线性结构是一种基本的数据结构&#xff0c;主要用于对客观世界中具有单一前驱和后继的数据关系进行描述。线性结构的特点是数据元素…

漏刻有时数据可视化Echarts组件开发(43)水球图svg温度计动画

SVG是一种用XML定义的语言&#xff0c;用来描述二维矢量及矢量/栅格图形。具体来说&#xff0c;SVG图形是可伸缩的矢量图形&#xff0c;其图像质量不会因放大或改变尺寸而损失。 在SVG中&#xff0c;可以创建和修改图像、对图像进行搜索和索引、对其进行脚本化或压缩。此外&am…

【网络安全入门】学习网络安全必须知道的100 个网络基础知识

前言 话不多说&#xff0c;完整的资料已经上传至CSDN官方&#xff0c;需要的可以点击链接自取【282G】网络安全&黑客技术零基础到进阶全套学习大礼包&#xff0c;免费分享&#xff01; 1 什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备…

Zabbix“专家坐诊”第206期问答汇总

问题一 Q&#xff1a;老师&#xff0c;我想配置一下监控项和触发器&#xff0c;目前我想要三个&#xff0c;内存的使用情况百分比、磁盘的剩余多少G、CPU的使用情况百分比&#xff0c;用自带的模板修改&#xff0c;该怎么做&#xff1f; A&#xff1a;可以用100减去内置键值cp…

ICCV 2023 | 当尺度感知调制遇上Transformer,会碰撞出怎样的火花?

作者 &#xff5c; AFzzz 1 文章介绍 近年来&#xff0c;基于Transformer和CNN的视觉基础模型取得巨大成功。有许多研究进一步地将Transformer结构与CNN架构结合&#xff0c;设计出了更为高效的hybrid CNN-Transformer Network&#xff0c;但它们的精度仍然不尽如意。本文介绍…

java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

基于ssm的少儿编程网上报名系统+vue【附PPT|万字文档(LW)和搭建文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户名、密码、姓名、联系电话 用户&#xff1a; ①首页、课程信息推荐、课程资讯、查看更多 ②课程详情、点我收藏、购买、评论、留言反馈 ③个人中心、修改用户名、密码、姓名、性别、头像、手机号、我的收藏等 后台登录…

Pycharm调试时,到达断点后,一直connected

Pycharm调试时&#xff0c;到达断点后&#xff0c;一直connected&#xff0c;画了一上午时间&#xff0c;最后发现是因为我dataloader使用的是多进程&#xff0c; 选中Gevent兼容后解决。

九方云学堂学员告诉你学习可以掌握哪些内容

在当前的股票市场环境下,存在许多不确定性因素和风险。虽然不少新兴行业的诞生,为投资者带来了更多的投资机会,但是风险同样会与日俱增。在这种情况下,作为一名投资者,想要在不断变化的市场环境中,提高投资胜率,做到复利,完整、科学的投资策略,成为了越来越多投资者关注的焦点。…

软信天成:物料主数据的标准管理

在制造企业加工生产的过程中&#xff0c;物料管理尤为重要。严格的原料管控将直接影响产品的品质、工作效率以及制造成本。相较于其他主数据&#xff0c;物料主数据是一种最复杂、数据量最大也是最关键的主数据&#xff0c;其准确性和规范程度将直接决定系统是否顺畅运行。 因此…

Python教程:方法重载

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 方法重载 方法重载在Python中起着关键作用。 方法有时接受零参数&#xff0c;有时接受一个或多个参数。 当我们以不同的方式调用同一个方法时&#xff0c;这就被称为方法…

Windows mysql 5.7 msi版、mysql 8.0 msi版下载、安装教程,附详细图文

大家好&#xff0c;今天为大家带来的是 mysql 5.7 msi &#xff0c; MySql 8.0 版本的下载、安装教程&#xff0c;附详细图文。本文以 5.7 版本为例子&#xff0c;帮助大家讲解。希望对大家有所帮助 文章首发地址 一、下载地址 这里提供一下 CSDN 镜像下载地址&#xff0c;有…