Xpoint
   [напомнить пароль]

разделитель между атрибутами в тэге

Метки: [без меток]
2005-06-20 18:38:18 [обр] frobenius(0/3)[досье]
Добрый день, не подскажете, какие символы можно использовать в качестве разделителей в тэге ?
есть ли возможность вставлять комментарии внутри тэга (например, чтобы он являлся разделителем) ?
просто недавно увидел ссылку, которую IE корректно обрабатывает! : <a/href="http://example.ru">example</a>
Наверное, это баг эксплорера - что он проглотил слэш, а не пробел\таб.
Никто не подскажет, как можно создать ссылку, которая не содержала бы пробелов, но была бы корректной ?
(как в моем примере со слэшем)
быть может, это не обязательно тэг <a>, а там... <AREA href="" , <IFRAME src=""
спустя 4 минуты [обр] Алексей Севрюков(0/1280)[досье]
frobenius[досье] А зачем Вам это надо? Вообще спецификация AFAIK гласит что там допустимы только пробельные символы (пробел, табуляция, перевод строки).
спустя 55 минут [обр] Алексей В. Иванов(9/2861)[досье]
frobenius[досье] Вы хотите странного, мягко говоря.
Разделители бывают только пробельные. То, что браузеры "проглатывают" всякий бред — это, скорее, их проблемы, баги, если хотите. В юникоде, есть интересные символы, например, 160 (0xA0) — неразрывный пробел, но я не уверен, что это то, что Вам нужно. Кстати, а что Вам нужно?
спустя 1 час 13 минут [обр] DJ G.E.D(0/101)[досье]

frobenius[досье]
<anytag fictionarg='Комментарий с пробелами
и переносами строк'>

Валидацию конечно не пройдет, но корректно проглотится любым браузером для любого тега.

спустя 7 часов [обр] Николай Мищенко(0/1)[досье]

То, что пробельный символ - CR|LF|SP - это в XML указано, а не в HTML.
Для того, чтобы знать узнать пробельные разделители HTML, думаю лучше обратиться к SGML ;)
Но ее вроде в свободном доступе вроде нет.
А вообще, разделителями вроде считаются ASCII (десятичное):
TAB = 11 (табуляция), LF = 12(новая строка), VT = 13 (вертикальная табуляция), FF = 14 (новая страница), CR = 15 (возврат каретки), SP = 32 (пробел)
Причем у меня в Far VT и FF отображаются как обычные символы, т.е ссылка получается неразрывной ;)

IE проглатывает слэш - но это по-моему уже немного не из той оперы (хотя утверждать не возьмусь, см. выше).

Обработка ошибочных состояний агентами в HTML не регламентирована жестко (см спецификацию HTML, приложение B1), но в большинстве современных браузеров можно писать так:
<a href="/somelink" [comment] title="intresting">our files</a>

спустя 3 часа 1 минуту [обр] AB...(0/233)[досье]
А что мешает использовать title для комментариев?
Фактически все теги имеют данный атрибут.
спустя 32 минуты [обр] Алексей В. Иванов(9/2861)[досье]
Думаю, автор не имел в виду такие комментарии, а продолжал настаивать на том, чтобы вставить какие-либо спец.символы вместо пробелов, дабы обеспечить неразрывность строки :)
Т.е. <a<!---->href=""> или <a/**/href="">, разумеется, ничего подобного в HTML нет. Но если быть точным, то в SGML присутствуют комментарии внутри тэгов это две пары -- (пример: <TAG -- комментарий -- >), но они не поддерживаются никакими браузерами, а без пробелов по краям тем более :)
спустя 17 минут [обр] Ярослав Сюзёв (yara)(2/305)[досье]
М Перенесено из форума "Интернет::HTML-верстка::Особенности браузеров"
спустя 3 часа 33 минуты [обр] frobenius(0/3)[досье]

спасибо всем за комментарии. я так понял, что это невозможно :(

Что до сути вопроса: дело в том, что протокол HTTP не допускает использование пробельных символов.
на пробел, tab, ну и конечно перевод строки - apache стабильно ругается "bad request".
Мне же очень надо одним из параметров в GET запросе передать HTML ссылку (которую, как я понял, без пробела никак не создать).
так что возможных решения два: либо как-то попросить http пропустить разделитель тэга. либо сделать разделитель таким, чтобы его пускал http.
(кодирование пробела в моем случае исключено: т.е. + и %20 - не решение)

даже не знаю куда копать - может, в сторону различных видов юникода, в надежде что кто-то это проглотит... не верится что IE без причин обрабатыает разделитель - слэш. Кстати, никто не знает, какую функцию может нести нулевой символ \0 в строке запроса ( точки зрения как html так и Http) ?

спустя 20 минут [обр] Алексей В. Иванов(9/2861)[досье]
Что до сути вопроса: дело в том, что протокол HTTP не допускает использование пробельных символов.
Бред какой-то.
Невольно складывается впечатление, Вы не понимаете сути процессов в решении поставленой задачи. Еще раз с самого начала, подробно и неспешно опишите задачу, жалательно в отдельной теме.
спустя 50 минут [обр] Сергей Круглов(33/2057)[досье]
Кроме %20 - никак.
спустя 50 минут [обр] Давид Мзареулян(9/1003)[досье]

frobenius[досье] Господи… это же надо таким извращённым способом решать такую простую задачу…

Вот расскажите, пожалуйста, ПОЧЕМУ «кодирование пробела в моем случае исключено: т.е. + и %20 - не решение»? Очень интересно.

спустя 1 час 28 минут [обр] Андрей Новиков(20/1242)[досье]
Давид Мзареулян[досье], т.е. передача HTML-я в HTTP заголовках тебя не смущает? :)
спустя 17 минут [обр] Давид Мзареулян(9/1003)[досье]
Андрей Новиков[досье] А кто говорит о заголовках? Речь идёт об обычных GET-параметрах.
спустя 2 часа 30 минут [обр] Андрей Новиков(20/1242)[досье]
Ой, да, пропустил...
спустя 1 час 43 минуты [обр] Алексей Севрюков(0/1280)[досье]

Я вот что-то совсем не понимаю. А причем здесь всякие GET, title и прочее, когда вопрос стоит в том, чтобы убрать пробелы между аттрибутами в тэге?

Или я совсем не в теме?

спустя 21 час [обр] frobenius(0/3)[досье]

итак, для тех, кто не совсем понял:

дано: есть некий HTTP(1) сервис, который получает GET(2) запросы и на их основе публикует HTML(3) странички.
Более того, все переданные параметры он НЕ раскодирует(4), а публикует точь-в-точь такими, какими они были переданы.

задача: хитро передать в параметрах запросв некую строку, которая при публикации станет корректной ссылкой(5) HTML, а не броузера (6)

комментарии:

  1. (5) по идее должна содержать пробельный символ, который нельзя передавать через (1) + (2)
  2. в качестве разделителя (5) попробовать попытаться использовать непробельный символ (чтобы удовлетворить тербования (1) )например, в моем примере это слэш: / И, несмотря на то, что IE корректно обрабатывает конуструкцию <a/href="...> - она не является (5) в смысле (3) а не отдельного взятого, пусть и распространенного броузера.
  3. в качестве разделителя нельзя передавать %20 и +, потому что (4)
  4. еще придумал вариант без пробелов: <SCRIPT>document.write(unescape('<a%20href="http://ya.ru">ya</a>'));</SCRIPT>

однако и это не стандарт (5) - а просто обработка броузером скрипта. То есть противоречие c (6)

ввиду этих комментариев, мне задача кажется нереализуемой, так как пробелы необходимы в (3) но исключены а (1).
Однако, так как HTML HTTP GET - являются стандартами интернет, хотел спросить в этом форуме, есть ли какие-то особенности вышеуказанных стандартов, которые могли бы быть полезны при решении. (а именно - либо в http засунуть пробельный символ, либо сделать ссылку без пробелов.)

спустя 47 минут [обр] Давид Мзареулян(9/1003)[досье]
все переданные параметры он НЕ раскодирует

Значит, это не HTTP-сервис:) Этот Ваш «сервис» — на каком сервере-то работает?

есть ли какие-то особенности вышеуказанных стандартов

Есть. Замена пробелов на “%20” или “+” или, по человечески говря, URL-encoding.

спустя 23 минуты [обр] Владимир Палант(49/4445)[досье]
Что-то у меня всё больше складывается впечатление, что frobenius[досье] этот сервис не делал, а просто пытается использовать XSS-уязвимость...
спустя 7 минут [обр] Давид Мзареулян(9/1003)[досье]
Ну, впечатление-то это с самого начала присутствует:), но презумпция есть презумпция. Хотя, давайте спросим у frobenius[досье]-а — а что за сервис-то такой? Ссылочку можно?
спустя 1 час 57 минут [обр] frobenius(0/3)[досье]

сервис не мой, сервер не мой. ммм... может это и называется xss-уязвимость. :)
вообще не важно, что послужило поводом для иследования, просто хочу вникнуть в тонкости HTTP + GET + HTML.
и почему IE корректно обрабатывает <a/href="> - какие могли тут быть предпосылки.

а применение - второй вопрос.

спустя 8 минут [обр] Владимир Палант(49/4445)[досье]
Все "тонкости" вам уже несколько раз объяснили. GET-параметры надо кодировать, если этот скрипт не декодирует — это его глюки. Разделителем между именем тега и атрибутами в HTML являются пробельные символы, если IE сожрал что-то другое и не подавился — на то он и IE (Mozilla и Opera такой код не принимают). Всё.
спустя 3 минуты [обр] Давид Мзареулян(9/1003)[досье]

ОК, так и запишем — от внятного ответа уклонился.

Не занимались бы Вы кулхацкерством. Побьют-с.

спустя 2 часа 36 минут [обр] Алексей В. Иванов(9/2861)[досье]
frobenius[досье]
Тонкости HTTP: RFC2616(ietf)
Тонкости HTML
Powered by POEM™ Engine Copyright © 2002-2005