схема URI данных - data URI scheme

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

Схема URI данных - это схема универсального идентификатора ресурса (URI), которая обеспечивает способ включения данных в строку в Web страницы, как если бы они были внешним источником es. Это форма литерала файла или здесь документ. Этот метод позволяет обычно выбирать отдельные элементы, такие как изображения и таблицы стилей, в одном запросе протокола передачи гипертекста (HTTP), который может быть более эффективным, чем несколько запросов HTTP, и используется несколькими расширениями браузера для упаковки изображения, а также другое мультимедийное содержимое в одном файле HTML для сохранения страницы. По состоянию на 2015 год URI данных полностью поддерживаются большинством основных браузеров и частично поддерживаются в Internet Explorer и Microsoft Edge.

Содержание
  • 1 Синтаксис
  • 2 Примеры использования
    • 2.1 HTML
    • 2.2 CSS
    • 2.3 JavaScript
    • 2.4 SVG
  • 3 Вредоносное ПО и фишинг
  • 4 Ссылки
Синтаксис

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

данных :[][; base64 ],
  • Схема, данные. За ним следует двоеточие (:).
  • Необязательный тип носителя . Часть типа носителя может включать в себя один или несколько параметров в формате атрибут = значение, разделенных точкой с запятой (;). Общим параметром типа носителя является кодировка, указывающая набор символов для типа носителя, где значение берется из списка IANA наборов символов имен. Если он не указан, предполагается, что тип носителя 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. Обратите внимание, что данные в кодировке Base64:URI используют стандартный набор символов Base64 (с '+' и '/' как символы 62 и 63), а не так называемый набор символов «безопасный для URL-адресов 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")

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

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

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

HTML

Фрагмент HTML, встраивающий изображение маленькой красной точки: Red-dot-5px.png

Red dot 

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

CSS

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

ul.checklist li.complete {padding-left: 20px; фон: белый URL ( 'данные: изображения / PNG; base64, IVB \ ORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEU \ AAAD /// + l2Z / dAAAAM0lEQVR4nGP4 / 5 / ч / 1 + G / 58ZDrAz3D / McH8 \ yw83NDDeNGe4Ug9C9zwz3gVLMDA / A6P9 / AFGGFyjOXZtQAAAAAEl \ FTkSuQmCC') нет- повторить прокрутку слева вверху; }

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

JavaScript

A JavaScript инструкция, которая открывает встроенное подокно, как для ссылки сноски:

window.open ('data: text / html; charset = utf-8,' + encodeURIComponent (// Escape для форматирования URL '' + '' + 'Embedded Window' + '

схема URI данных - data URI scheme

' + ''));

SVG

Пример изображения SVG со встроенными изображениями JPEG

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

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

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

Ссылки
Последняя правка сделана 2021-05-17 14:09:09
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте