Jump to content

схема URI данных

(Перенаправлено с URL-адреса данных )

Схема URI данных — это схема универсального идентификатора ресурса (URI) , которая позволяет включать данные в веб-страницы, как если бы они были внешними ресурсами. Это форма файлового литерала или здесь документа . Этот метод позволяет обычно получать отдельные элементы, такие как изображения и таблицы стилей, в одном запросе протокола передачи гипертекста (HTTP) , что может быть более эффективным, чем несколько HTTP-запросов. [ 1 ] и используется несколькими расширениями браузера для упаковки изображений, а также другого мультимедийного контента в один HTML-файл для сохранения страницы. [ 2 ] [ 3 ] По состоянию на 2024 год , URI данных полностью поддерживаются всеми основными браузерами. [ 4 ]

Синтаксис

[ редактировать ]

Синтаксис URI данных определен в запросе на комментарии (RFC) 2397, опубликованном в августе 1998 г. [ 5 ] и соответствует синтаксису схемы URI . URI данных состоит из:

data:content/type;base64,
  • Схема , data. После него ставится двоеточие ( :).
  • Необязательный тип носителя . Часть типа носителя может включать в себя один или несколько параметров в формате attribute=value, разделенные точкой с запятой ( ;) . Общий параметр типа носителя: charset, определяющий набор символов медиа-типа, где значение взято из списка имен наборов символов IANA . [ 6 ] Если он не указан, тип носителя URI данных: предполагается, что text/plain;charset=US-ASCII.
  • Необязательное расширение base64. base64, отделенный от предыдущей части точкой с запятой. Если он присутствует, это указывает на то, что содержимое данных URI представляет собой двоичные данные , закодированные в формате ASCII с использованием схемы Base64 для кодирования двоичного кода в текст . Расширение base64 отличается от любых параметров типа носителя отсутствием =value компонент и следуя за любыми параметрами типа носителя. Поскольку данные в кодировке Base64 примерно на 33 % больше исходных данных, рекомендуется использовать URI данных Base64 только в том случае, если сервер поддерживает сжатие HTTP или размер встроенных файлов меньше 1 КБ.
  • Данные , отделенные от предыдущей части запятой ( ,). Данные представляют собой последовательность из нуля или более октетов, представленную в виде символов. Запятая требуется в URI данных, даже если часть данных имеет нулевую длину. Символы, разрешенные в части данных, включают прописные и строчные буквы ASCII, цифры, а также множество знаков препинания и специальных символов ASCII. Обратите внимание, что сюда могут входить такие символы, как двоеточие, точка с запятой и запятая, которые являются разделителями в компонентах URI, предшествующих части данных. Остальные октеты должны быть закодированы в процентах . Если данные закодированы в формате Base64, часть данных может содержать только допустимые символы Base64. [ 7 ] Обратите внимание, что кодировка Base64 data: URI используют стандартный набор символов Base64 (с ' +' и ' /' как символы 62 и 63), а не так называемый набор символов " URL-safe Base64 ".

Примеры URI данных, демонстрирующие большинство функций:

data:text/vnd-example+xyz;foo=bar;base64,R0lGODdh
data:text/plain;charset=UTF-8;page=21,the%20data:1234,5678
(выходные данные: «данные: 1234,5678»)
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD
data:image/svg+xml;utf8,<svg width='10'... </svg>

Минимальный URI данных: data:,, состоящий из схема, без типа носителя и данные нулевой длины.

Таким образом, в общем синтаксисе URI URI данных состоит из схемы и пути , без авторитетной части, строки запроса или фрагмента . Необязательный тип носителя , необязательный индикатор base64 и данные — все это части URI-путь.

Примеры использования

[ редактировать ]

Фрагмент HTML , встраивающий Base64 : в кодировке PNG- изображение маленькой красной точки

<img alt="" src="data:image/png;base64,iVBORw0KGgoAAA
ANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4
//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU
5ErkJggg==" style="width:36pt;height:36pt" />

В этом примере строки разбиты в целях форматирования. В реальных URI включая URI данных, управляющие символы (ASCII от 0 до 31 и 127) и пробелы (ASCII 32) являются «исключенными символами». Это означает, что символы пробелов не допускаются в URI данных. Однако в контексте HTML 4 и HTML 5 переводы строк внутри значения атрибута элемента (например, «src» выше) игнорируются. [ нужна ссылка ] . Таким образом, приведенный выше URI данных будет обработан без учета перевода строки, что даст правильный результат. Но обратите внимание, что это функция HTML, а не функция URI данных, и в других контекстах невозможно полагаться на то, что пробелы внутри URI игнорируются.

Фрагмент HTML , встраивающий utf8 : в кодировке SVG- изображение маленькой красной точки

<img alt="Red dot" src="data:image/svg+xml;utf8,
<svg width='10' height='10' xmlns='http://www.w3.org/2000/svg'>
 <circle style='fill:red' cx='5' cy='5' r='5'/>
</svg>"/>

В этом примере данные изображения закодированы с помощью utf8, и, следовательно, данные изображения могут быть разбиты на несколько строк для удобства чтения. В данных SVG необходимо использовать одинарную кавычку, поскольку двойная кавычка используется для инкапсуляции источника изображения.

Фавикон также может быть создан с использованием кодировки utf8 и данных SVG, которые должны появиться в разделе « head » HTML:

<link rel="icon" href='data:image/svg+xml;utf8,
<svg width="10" height="10" xmlns="http://www.w3.org/2000/svg">
 <circle style="fill:red" cx="5" cy="5" r="5"/>
</svg>'/>

Правило каскадных таблиц стилей (CSS) , включающее фоновое изображение:

ul.checklist li.complete {
    padding-left: 20px;
    background: white url('data:image/png;base64,iVB\
ORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEU\
AAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8\
yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAEl\
FTkSuQmCC') no-repeat scroll left top;
}

В этом примере \ + <linefeed> терминаторы линии являются функцией CSS, указывающей продолжение на следующей строке. Они будут удалены процессором таблицы стилей CSS, а URI данных будет восстановлен без пробелов, что сделает его правильным, поскольку пробелы не допускаются в компоненте данных данных: УРИ.

Оператор JavaScript , открывающий встроенное подокно, как для ссылки в сноске:

window.open('data:text/html;charset=utf-8,' +
    encodeURIComponent( // Escape for URL formatting
        '<!DOCTYPE html>'+
        '<html lang="en">'+
        '<head><title>Embedded Window</title></head>'+
        '<body><h1>42</h1></body>'+
        '</html>'
    )
);
Пример изображения SVG со встроенными изображениями JPEG

Масштабируемое векторное графическое изображение, содержащее встроенное изображение JPEG, закодированное в Base64:

<svg>
<image width="64" height="24" href="data:image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc1p9tZ++u7Kf
r6zI4f/zyNT/16yv+v/9////////wfD/////////////2wBDATU4OEtCS5NRUZP/zq/O////////
////////////////////////////////////////////////////////////wAARCAAYAEADAREA
AhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAQMAAgQF/8QAJRABAAIBBAEEAgMAAAAAAAAAAQIR
AAMSITEEEyJBgTORUWFx/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAA
AAD/2gAMAwEAAhEDEQA/AOgM52xQDrjvAV5Xv0vfKUALlTQfeBm0HThMNHXkL0Lw/swN5qgA8yT4
MCS1OEOJV8mBz9Z05yfW8iSx7p4j+jA1aD6Wj7ZMzstsfvAas4UyRHvjrAkC9KhpLMClQntlqFc2
X1gUj4viwVObKrddH9YDoHvuujAEuNV+bLwFS8XxdSr+Cq3Vf+4F5RgQl6ZR2p1eAzU/HX80YBYy
JLCuexwJCO2O1bwCRidAfWBSctswbI12GAJT3yiwFR7+MBjGK2g/WAJR3FdF84E2rK5VR0YH/9k="/>
</svg>

Вредоносное ПО и фишинг

[ редактировать ]

URI данных можно использовать для создания страниц атаки, которые пытаются получить имена пользователей и пароли от ничего не подозревающих веб-пользователей. Его также можно использовать для обхода ограничений межсайтового скриптинга (XSS), полностью встраивая полезные данные атаки в адресную строку и размещая через службы сокращения URL-адресов, вместо того, чтобы использовать полноценный веб-сайт, контролируемый третьей стороной. [ 8 ] В результате некоторые браузеры теперь блокируют веб-страницам переход к URI данных. [ 9 ]

  1. ^ «Использование URI данных для ускорения вашего веб-сайта» . Блог домика на дереве. 27 марта 2014 г.
  2. ^ «SingleFile — Интернет-магазин Chrome» . Интернет-магазин Chrome . Проверено 25 августа 2018 г.
  3. ^ «SingleFile – Дополнения для Firefox» . Дополнения Firefox . Проверено 25 августа 2018 г.
  4. ^ Деверия, Алексис (июль 2015 г.). «Могу ли я использовать...» Проверено 31 августа 2015 г.
  5. ^ Масинтер, Л. (август 1998 г.). «RFC 2397 — Схема URL-адреса данных» . Рабочая группа по интернет-инжинирингу . Проверено 12 августа 2008 г.
  6. ^ Фрид, Нед; Дюрст, Мартин, ред. (20 декабря 2013 г.). «Наборы символов» . Управление по присвоению номеров в Интернете . Проверено 31 августа 2015 г.
  7. ^ Бернерс-Ли, Тим ; Филдинг, Рой ; Масинтер, Ларри (январь 2005 г.). «Единые идентификаторы ресурсов (URI): общий синтаксис» . Рабочая группа по интернет-инжинирингу . Проверено 31 августа 2015 г.
  8. ^ Фишинг без веб-страницы - исследователь показывает, как сама ссылка может быть вредоносной, Naked Security от Sophos, 31 августа 2012 г. https://nakedsecurity.sophos.com/2012/08/31/phishing-without-a-webpage-researcher- показывает, как-ссылка-сама-может-быть-вредоносной/
  9. ^ «URL-адреса данных — HTTP | MDN» . Веб-документы MDN . Мозилла . Проверено 11 мая 2018 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: be18d4a7d1c29c424196b406fa9e106e__1713305280
URL1:https://arc.ask3.ru/arc/aa/be/6e/be18d4a7d1c29c424196b406fa9e106e.html
Заголовок, (Title) документа по адресу, URL1:
data URI scheme - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)