Веб-стандарты

индекс
156,37

О необходимости внесения поправок в HTML 5

Нынешний проект HTML 5 содержит функцию registerProtocolHandler() в таком виде, который не особенно пригоден ко практическому употреблению. И нелишне будет рассказать о том, как я пришёл к такому выводу.

Рассказ будет обширен; кто не чувствует в себе резервов терпения, тем лучше под хабракат не лазать.

Году примерно в 2007 или в 2008 был открыт сайт http://fghi.pp.ru/ он работает как гейт между фидонетовской системою эхопочты и браузерами наподобие Файерфокса. Например, ежели у кого нету прямого доступа к Фидонету, и потому он не может прямо открыть фидонетовское сообщение, имеющее URL

      area://Ru.Blog.Mithgol?msgid=2:5063/88+49659a64

то зато он может использовать веб-гейт, открыв URL

      http://fghi.pp.ru/?area://Ru.Blog.Mithgol?msgid=2:5063/88+49659a64

Гейт этот обрабатывает несколько схем FGHI URL (таких, как «area://...» и «fecho://...») для фидонетовских гиперссылок.

В прошлом же году появился Firefox 3.0.x — браузер, реализовавший предложение WhatWG насчёт API registerProtocolHandler(). Вебсайтам стало возможно регистрироваться в качестве обработчиков для схем URLов, прежде неизвестных браузеру. Для схем, подобных FGHI URL Фидонета, прежде остававшихся совершенно неведомыми для браузеров Интернета, хотя постепенно они воплощалися во браузерах Фидонета (таких, как HellEd и NoSFeRaTU's GoldED+).

Я без промедления поведал о том фидонетовской эхопочтою автору FGHI URL гейта и объяснил ему достоинства registerProtocolHandler():

      area://GanjaNet.Local/?msgid=2:5063/88+48319a1f

Тогда автор FGHI URL гейта создал страницу http://fghi.pp.ru/handler.php в качестве места, которое кто угодно может посетить и зарегистрировать гейт в качестве обработчика гиперссылок «area://» и «fecho://» в Файерфоксе.

Однако, даже после того, как этакая регистрация завершена, читатель посещает страницы наподобие http://fghi.pp.ru/?area://FTSC_Public/ и видит там URLы в загейтованном виде, типа такого:

      http://fghi.pp.ru/?area://FTSC_PUBLIC?msgid=2:280/5555+48c0e781

Я спросил автора гейта, отчего URLы не предоставляются тогда в их естественном фидонетовском виде, типа такого:

      area://FTSC_PUBLIC?msgid=2:280/5555+48c0e781

Автор гейта тогда объяснил мне, что WhatWG API неполон и не обеспечивает сайту никакого способа определить, был ли вызов registerProtocolHandler() успешным, была ли схема URLа в действительности зарегистрирована, остаётся ли она зарегистрированною до той поры, когда очередная страница отдаётся сервером.

Для меня стало совершенно очевидно, что HTML 5 надобно дополнить, чтобы и эта задача могла выполняться невозбранно.

Возможно, функцию registerProtocolHandler() нынешнего стандарта HTML 5 уместно оставить void (не возвращающей значение), как сейчас записано в стандарте; однако WhatWG не мешало бы изобрести новую булевскую (логическую) функцию с именем наподобие protocolRegistered("area") и с единственным аргументом — именем протокола — для проверки, зарегистрирован ли протокол.

На http://www.whatwg.org/specs/web-apps/current-work/#custom-handlers перечислены возможные последствия такой регистрации протоколов в плане их безопасности. Лично мне приходят на ум следующие два соображения:

1) Браузер должен предотвращать «захламление», «заспамливание» пользователя джаваскриптовыми запросами о регистрации, даже если сайт вознамерится вызывать функцию registerProtocolHandler() до тех пор, покуда protocolRegistered() не возвратит истинное значение. На странице http://fghi.pp.ru/handler.php я приметил ужé, что Firefox показывает свои уведомления последовательно («fecho://» после «area://» и только если регистрация «area://» пользователем была принята или отклонена); этой меры, вероятно, и довольно.

2) Сайт не должен мочь торговаться за регистрацию протокола; например, сценарий «чтобы залогиниться в архив порно, зарегистрируйте тут ваш обработчик «mailto:» и тем дозвольте нам собирать адреса ваших корреспондентов для рассылки спама им» должен беспременно быть предотвращён. Простой галочки в интерфейсе браузера при регистрации схемы («Я регистрирую evil.example.org как обработчик только тех mailto-ссылок, которые появляются на самом evil.example.org».) было бы достаточно для того, чтобы сайт видел protocolRegistered() истинным и даже мог проверить, что гиперссылка «mailto:example@evil.example.org», когда жмякнули по ней мышою, привела на страницу обработчика на том сайте — но никакого другого вреда этого не приносило бы.

Кое-кому могло бы прийти в голову, что функция protocolRegistered("area") могла бы возвращать не просто логическую истину, но и прямо гиперссылку (в вышеприведённом примере, «http://fghi.pp.ru/?%s»). Однако эдак во внешнюю Сеть запросто могли бы утечь интранетовские адреса страниц-обработчиков. А кроме того (и это, пожалуй, ещё повесомее будет), тогда сайты-обработчики могли бы использовать собственные префиксы вместо того, чтобы подавать нестандартные адреса в естественном их виде, если и когда было бы заметно, что пользователь предпочитает (и зарегистрировал в качестве обработчика естественного вида нестандартных URLов) некоторый другой сайт, сайт конкурентов. Это было бы настолько очевидной гадостию, что я полагаю двоичную функцию protocolRegistered() наилучшим выходом.

Вот и вся история о том, отчего одной функции registerProtocolHandler() недостаточно.

Теперь я обращаюсь к Хабру с вопросом: каким образом можно переломить ситуацию? Есть ли на Хабре лица со связями в WhatWG и (или) в браузеростроительной отрасли, которые способны повлиять на принятие решений и начертать API регистрации схем URLов в более законченном, в более удобном для сайтостроителей виде?
–6
24 марта 2009, 11:41

комментарии (17)

+1
spyfzm #
Чтобы что-то исправить, надо написать не сюда, а разработчикам HTML5 и Mozilla. Думаю, они не оставят ваши идеи без интереса.
–1
Mithgol #
Нет, это не так.

Я знаю это на опыте.

Я ж ужé писал разработчикам Mozilla Firefox (в мозилловую багзиллу), в итоге WONTFIX и пожелание сперва добиться успеха в WhatWG, понеже Firefox не устанавливает правила игры.

Я писал в WhatWG (в тамошний список рассылки), но никто не ответил ни слова.

Стало быть, я просто не тот человек, к которому они готовы преклонить слух. Надобны лица с неиллюзорными связями и авторитетом в WhatWG и (или) в браузеростроительной отрасли, которые способны повлиять на принятие решений и начертать API регистрации схем URLов в более законченном, в более удобном для сайтостроителей виде. И которые понимают практическую пользу вышеизложенного предложения.
–1
spyfzm #
Тогда — берете исходники файрфокса, в соответствии с лицензией удаляете все торговые марки и заменяете изображения на свободные. Затем переписываете реализацию HTML5 под свои нужды, доказываете разработчикам HTML5 что вы правы на живом примере. В любом случае, на выходе вы получите чуть более идеальный для вас браузер, которым сможете невозбрнно пользоваться в личных целях и даже распространять среди фидошников.
–5
Mithgol #
Ах, как смешно, какой искромётный юмор! питрасян патсталом.
–1
spyfzm #
А где юмор? Я без шуток, только иронизирую над вашим «невозбранно», забавное словечко. У вас нет единомышленников, которые могли бы вам помочь поэкспериментировать с этой функцией? Вы случайно не единомышленников хотели здесь найти, написав этот пост? И что это вы вдруг столько ошибок в письменной речи наделали?
–3
Mithgol #
Если без шуток, то я не собираюсь перекомпилировать Firefox — это муторное дело, я знаю, я пробовал.

Единственная светлая мысль в этой идее заключается в том, что можно попробовать расширить объектную модель документа Firefox, добавить недостающую функциональность API. Но для этого совсем не обязательно перекомпилировать сам Firefox, достаточно сочинить расширение.

Вот над этой светлой мыслью я ещё подумаю.
0
spyfzm #
Расширение это хорошо, но это недомера — будет доступно не всем пользователям браузеров, поддерживающим HTML5, а только тем, кто установит расширение. Попробуйте еще раз обратиться в WhatWG, не в список рассылки, а живым людям напишите письмо с вопросом: «Есть такая мысль, куда мне написать развернутое обоснование и как я могу поучаствовать в разработке?». У вас в интересах, кроме упомянутого ниже «имперское правописание», есть «созидательный труд», а вы уже опустили руки…
НЛО прилетело и опубликовало эту надпись здесь
–2
Mithgol #
См. выше.
НЛО прилетело и опубликовало эту надпись здесь
+5
Antikiller #
Как я понимаю Апача.
За этот фимозный стиль написания хочется травить, травить и травить.
Одно «не должен мочь» чего стоит. Технический смысл статьи тонет под этими языковыми вывертами.
–8
Mithgol #
Отношение лиц вашего вероисповедания ко всем необрезанным («фимозным») давно известно.
0
Antikiller #
В данном случае речь идёт о фимозе несколько другого органа.
–6
Mithgol #
«Необрезанное гойское сознание», я так понял.
+2
XaocCPS #
вы просто ничего не понимаете в имперском правописании

*см. интересы автора
0
Busla #
всё равно стиль не выдержан ;-)
+6
XaocCPS #
«когда я слышу „гипертекстовый фидонет“ я хватаюсь за пистолет»

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.