Какое-то Интернет общество М. Семёнов Запрос коментариев: /\/\/\/\ WORKGROUP Категория: информационный Апрель 2022 HTTP.CFG ── файл управления сообщениями HTTP. Зачем? Файл "HTTP.CFG" предназначен для использования на хостинговых сервисах. Его целью является предоставить возможность определять такие вещи, как собственные сообщения к ошибкам HTTP, систему постоянных, либо временных перенаправлений, определение параметров MIME по умолчанию и др., что имеется на самостоятельных сайтах. Содержание 1 Реализация . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Основной синтаксис . . . . . . . . . . . . . . . . . . . . . . . 1 2.1 Директивы . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Группировка . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 Элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.1 Глобальные директивы . . . . . . . . . . . . . . . . . . . . . 2 3.2 Общие директивы . . . . . . . . . . . . . . . . . . . . . . . . 3 3.3 Только групповые . . . . . . . . . . . . . . . . . . . . . . . 4 4 Внимание к Безопасности . . . . . . . . . . . . . . . . . . . . . 5 5 Внимание к IANA . . . . . . . . . . . . . . . . . . . . . . . . . 5 А Метки для документов с сообщениями HTTP . . . . . . . . . . . . . 5 1 Реализация При реализаций файла HTTP.CFG необходимо сделать поддержку хотя-бы всех описанных здесь элементов. Новые элементы должны быть спроектированы по пункту 2.1. Также следует создать своё описание всех реализованных элементов в документаций. Если сервер работает на Апаче, то для этих целей следует использовать файл ".htaccess". 2 Основной синтаксис Весь файл состоит из директив и групп. Каждая дриектива и группа должна занимать 1 строку и не может начинатся с пробелов и табуляций. Файл должен содержать только ASCII символы, и никакие другие. При обнаружений таких символов сервер должен сжечь файл и забыть, что оно когда-то существовало. Эта секция описывает основной формат директив, которым должны МИША Информационный [Страница 1] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 придерживаться все авторы при разработке синтаксиса новых директив. Общее для всех директив, которые будут описаны в документе, следующие: crlf = %x0C.0A путь = "/" [директория "/" [...]] файл "." расширение crlf 2.1 Директивы Синтаксис файла достаточно простой. Оно представляет собой набор директив, собранные в группы для отдельного файла. Каждая директива должна быть составлена следующим образом: директива = элемент ":" [" " токен] crlf элемент = имя ["." подэлемент [...]] элемент представляет поле, для которого действует токен, а его подэлемент может уточнять, для каких случаев определён токен. Последний поделемент может определять имя параметра для данного поля. Элементы обычно независимы от регистра, токены должны быть предоставлены как есть. Если несколько записей определяет один объект, то они должны быть последовательно добавлены через запятую с пробелом. Если токен не является правильным в контексте, то сервер должен проигнорировать директиву, и сообщить об этом в логе. 2.2 Группировка Директивы могут быть сгруппированы для действия на отдельные файлы. Группа специфичных к отдельному файлу директив начинается от объявляющей группу директивы и заканчиваются либо объявлением следующей, либо концом всего файла. Директива объявления представляет собой путь от логического корня сайта до отдельного файла. Те директивы, которые были записаны до самого первого объявления группы, являются глобальными директивами и имеют эффект над всеми файлами на сайте. Если у файла нет расширения, то следует опустить только "расширение", не убирая точки. ЗАМЕЧАНИЕ: если при просмотре файла был обнаружен байт 0x26, то вся строка с ним обязана быть проигнорирована, а все последующие данные признать несуществующими. Это нужно на случай, если пользователь хостинга использовал Строковый редактор для создания файла. 3 Элементы МИША Информационный [Страница 2] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 3.1 Глобальные директивы Эти директивы не могут быть соотнесены к конкретному файлу. Они имеют глобальное значение ко всему веб-сайту. Поэтому они должны быть расположены в начале файла. 3.1.1 Сообщения HTTP сообщение: "messame." статус ["." параметр] ": " путь crlf Это поле позволяет пользователю указывать файлы, находящиеся на хостинге, содержимое которых должно будет передано для показа пользователю. Именем является слово "message". Первым подэлементом является номер сообщения. Они могут быть определены только для сообщений "3xx" и "4xx", но остальные обязаны быть или определены хостингом (5xx), либо нигде и никогда не быть определены (1xx, 2xx). Необязательный параметр может уточнять, в каких случаях возникновения данного статуса следует использовать данный документ. Параметр может быть определён в других директивах. 3.2 Общие директивы Эти директивы могут иметь как глобальное, так и локальное значение. Главным предназначением их является предоставить возможность добавлять мета информацию к файлам, которые впольне могет являются общими в рамках сайта (кодировка, например), либо же для случаев невозможности их указания в самом файле (все файлы формы TEXT/Plain страдают этим). 3.2.1 MIME дополнения к типу контента мим = "mime." тип "." [форма "."] дополнение ": " значение crlf Эта директива предназначена для добавления извне параметров к определённому типу документов. Пока "тип" может быть Text/Image/Audio/Video/Application/Multipart/etc.. "форма" указывает на конкретную форму документа (Plain, HTML, т. п.). "дополнение" определяет имя конкретного параметра. К примеру, если в файле написано: mime.text.СharSet: IBM866 то в HTTP ответе для документов типа TEXT тип документа может выглядить так (в примере ── HTML): МИША Информационный [Страница 3] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 Content-Type: TEXT/HTML; CharSet=IBM866 Но всё-же, директивы в самих документах должны иметь высший приоритет. 3.3 Только групповые 3.3.1 HTTP мета информация мета = "http." поле ": " токен crlf Эта директива позволяет добавлять в заголовок HTTP ответа любую мета информацию для конкретного файла. Мета информация должна быть об одном из тех, которые были зарегестрированы в IANA: http://www.iana.org/assignments/message-headers Веб-сервер должен перед вставкой мета информаций убедиться, что эта строка не призвана заместить служебную информацию. Если это так, то сервер должен проигнорировать эту директиву. 3.3.2 Перенаправления Директивы перенаправления должны иметь следующий вид: перенаправление = "redirect: " путь crlf Эта директива предназначена для постоянного перенаправления, когда запрашиваемый документ более недоступен по определённому в группе URL, но теперь может быть запрошен по новому. Путь должен обозначать новое местоположение документа. Перед тем, как сервер будет отправлять это сообщение, он должен сначала проверить возможность найти его, и если он есть, то спокойно отправлять его, и также упоминать об этом в логе, и только в противном случае отправлять сообщение о перенаправлений. Это нужно на случай, если пользователь хостинга забудет убрать директиву. 3.3.3 403 Запрещено запрет = "NO: " путь crlf Эта директива предназначена для указания документа, который должен в первую очередь описывать причину запрещения выдачи запрашиваемого. Оно имеет силу только в том случае, когда сам файл, для которого он определён, запрещён для выдачи всем агентам пользователя. Если же давать его можно, либо только определённому кругу пользователей запрещено или разрешено его запрашивать, то должна использоваться МИША Информационное [Страница 4] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 глобальная директива (если её нет, то ── стандартный ответ сервера). Рекомендуется писать "NO" прописными буквами. 2.3.4 410 Больше не существует ушёл = "gone: " ("moved" / "deleted") crlf Эта директива предназначена для обозначения того, что документ тут когда-то раньше существовал, но теперь его нет. При этом пользователь хостинга либо не хочет рассказывать новое местоположение, либо сжёг документ. Для глобальной директивы сообщений HTTP имеется параметр "moved" и "deleted". 3.3.5 418 Я ── чайник! чайник = "isteapot: " доступные_ингредиенты crlf доступные_ингредиенты = название "," HTCPCP-название [";" название "," HTCPCP-название [...]] Эта директива нужна на случай, если документ представляет собой правильный порт чайника, и к нему нужно получать доступ через протокол HTCPCP-TEA. "доступные_ингредиенты" должен представлять собой список, каждый элемент которого должен быть разделён точкой со запятой, а элементы должны состоять из народного названия и международного аналога, которые определены в HTCPCP. В соответственном документе для таких случаев место вставки списка может быть обозначено любой из меток для URL'ов (см. x.y). Там любой из них будет ссылатся ко списку, сформированный из народных названий ингредиентов, перечисленных через запятую. То есть ингредиенты = название ["," название [...]] 4 Внимание к Безопасности Для Безопасности не следует ставить в мета информацию всё, что может быть конфиденциально. Таёжк, при нахождений ошибок в документе их следует сообщать! 5 Внимание к IANA Пользователь хостинга должен определять только ту мета информацию, которая была зарегестрирована в IANA. В противном случае веб-сайт станет несовместимым с HTTP, поздним чем HTTP/1.1. Актуальный список МИША Информационное [Страница 5] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 может быть найден на: http://www.iana.org/assignments/message-headers А Метки для документов с сообщениями HTTP Документ с сообщением обязан быть вида TEXT в любой форме. Рекомендуемой формой является TEXT/HTML. Эти документы могут содержать специальные метки, призваные представить серверу информацию, как генерировать из них полезные для ответа сообщения. Метки очень просты, и имеют следующий вид: метка = 0x7F буква Где "буква" пока может быть одним из следующих: URL'ы ─ "U" ── обозначает, что сюда может быть вставлен абсолютный путь к объекту, включая домен и схему. Пример: http://plain.neonarod.сom/http.txt ─ "A" ── обозначает похожее на предыдущее, но без указания схемы. Пример: //www.ietf.org/rfc/rfc2616.txt ─ "H" ── обозначает полный путь к объекту внутри веб-сайта, начиная от логического корня. Пример: /letters/sqrt.htm ─ "R" ── обозначает относительный путь относительно запрашиваемого ресурса Специальный блок ─ "C" ── обозначает начало повторяющегося блока, повторяемого для каждой возможной в данной ситуаций ссылки. Условные блоки ─ "I" ── обозначает блок, который должен быть включён, если запрос был произведён путём перехода по ссылке на этом же сайте. ─ "X" ── обозначает блок, который должен быть включён, если запрос был произведён путем перехода по ссылке извне. ─ "N" ── обозначает блок, который должен быть включён, если URI был написан от руки ─ "Z" ── обращает значение предыдущих трёх пунктов. Их буква должна тут же следовать за буквой Z. Например, "ZN" начнёт появляться тогда, когда URL НЕ был написан вручную. (См. пример 1) Терминатор блоков ─ "E" ── конец блока. Если в документе не были найдены нужные для ответа блоки, то сервер должен использовать свой ответ, а также сообщить об этом в логе. ПРИМЕР: пользователь запросил некий документ по URL "http://www.example.org/lorem". Сервер не нашёл именно документ "lorem", зато нашёл файлы с похожими именами "lorem.txt", "lorem.html", и "lorem.xml". Тогда, в ответе 300 должы быть указаны МИША Информационное [Страница 6] ЗК /\/\/\/\ Файл управления сообщениями HTTP Апрель 2022 три документа. Для определения своего ответа пользователь хостинга может написать следующую директиву: message.300: /errors/300.htm А в том файле он может написать следующее: ...

^^,
^ Пожалуйста, уведомите автора обо сломаной ссылке. ^ //www.example.org/lorem.txt,
//www.example.org/lorem.html,
//www.example.org/lorem.xml,

Пожалуйста, уведомите автора обо сломаной ссылке. Адреса автора Для отправки сообщений по улучшению данного документа используйте следующие адреса почтовых ящиков автора во Всемирной паутине. МИША Семёнов E-mail: miha0x6d69@gmail.com, interchar0x6861@mail.ru Копиразм полностью (c) некто 2022. Права ещё не резервировал. Ты можешь скопировать документ. Ты можешь реализовать документ. Пожалуйта, если будешь копировать документ, поставь ссылку на оригинал, чтобы не потерять его и иметь возможность проверить на изменения, и обновить свой. Сервер даст документ как есть. МИША Информационное [Страница 7]