# Модифицированный Gopher Проект расширений для несовместимой модификации протокола Gopher и, возможно, расширения для Simple Text Protocol от alexschroeder.ch ## Согласование типа содержимого В основе - модифицированная идея gopher - указание на тип содержимого в ссылке. В описываемом варианте предлагается определять тип содержимого по суффиксу (расширению) селектора. Такой вариант удобен для восприятия пользователями и позволяет получить ссылку однозначно указывающую на ресурс и определяющую то, как он должен быть отображен. Так же он позволяет сократить число ссылочных типов в формате меню до одного общего (вариант "&"). Сервер может обрабатывать суффикс буквально, как часть пути, так и как указание на требуемый тип (аналогично заголовку Accept в HTTP) обрабатывая остальную часть, как адрес ресурса. Клиент должен обрабатывать ресурс по ссылке в соответствии с типом, определённым по расширению. Ресурсы по адресу, который заканчивается разделителем "/" должны обрабатываться, как меню. Ресурсы по адресу, который заканчивается "?" должны обрабатываться, как обработчик поискового запроса. Ресурсы с отсутствующим расширением могут обрабатываться, как меню, либо как бинарный файл (application/octet-stream) [требуется уточнение]. ## Элемент меню переменной длины В описываемом варианте предлагается рассматривать части дескриптора gopher имя узла и порт, как необязательные. В случае отсутствия поля узла и порта, в качестве узла клиент должен использовать текущие адрес узла и номер порта. В случае отсутствия поля порта, клиент должен использовать значение порта по умолчанию (70). ## Возвращение ответа определенной/неопределённой длины В описываемом варианте предлагается использовать схему chunked transfer encoding для возвращения ответа от сервера. [Требуется механизм согласования для опционального применения этого метода] ## Виртуальные хосты/маршрутизация по доменному имени В описываемом варианте предлагается использовать следующий формат запроса к серверу - <имя узла> + <селектор>, где имя узла опционально, а селектор должен начинаться с разделителя "/". ## Ссылки на ресурсы доступные по другим протоколам [В процессе] ## Индикация ошибок протокола [В процессе] ## Перенаправление [В процессе] ## Тегирование/метаданные меню [В процессе]