+  HandyCache форум
|-+  Главная категория» Общие вопросы» Баг - Не пишутся в кэш URL, содержащие спецсимволы
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Баг - Не пишутся в кэш URL, содержащие спецсимволы  (Прочитано 15789 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« : 11 января 2007, 22:46:19 »

По мотивам ру-борда (пост Dem_anywhere), чтобы не забылось:

Цитировать
урл вида search.php?text="tatata" в кеш не пишется.
Я конечно понимаю, что это вебмастер наглюкал и не преобразовал в %22 - но тем не менее...
Ради интереса прошёлся по всяким хитрым символам - аналогично происходит с <>
Ослик при отдаче отдаёт их в запрос без преобразования...

Проверил. Правило из "Запись в кэш" срабатывает, а файл в кэш не попадает!

P.S. Конечно, это можно "вылечить" несколькими правилами для списка "Переадресация" или "Преобразование URL":

Код:
#5#~#True#~#"#~#%22#~#True#~#True
#5#~#True#~#<#~#%3C#~#True#~#True
#5#~#True#~#>#~#%3E#~#True#~#True

но все-таки...
« Последнее редактирование: 10 марта 2007, 21:40:57 от DenZzz » Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #1 : 12 января 2007, 12:41:07 »

Проверил. Правило из "Запись в кэш" срабатывает, а файл в кэш не попадает!
И не должны. Т.к. эти символы нельзя в именах файлов использовать.
Это недоработка в алгоритме преобразования URL2File.
Правила в Преобразовании URL решают проблему, но лучше, чтобы HC сам это делал.

Еще достает, что HC не сообщает об ошибках когда не удалось записать в кэш
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #2 : 12 января 2007, 14:55:48 »

Сергей

Цитировать
И не должны. Т.к. эти символы нельзя в именах файлов использовать.

Должны, т.к. много какие символы нельзя в именах файлов использовать, однако HC их атоматически заменяет на другие, которые можно использовать! А про эти забыли...

Цитировать
Это недоработка в алгоритме преобразования URL2File.
Правила в Преобразовании URL решают проблему, но лучше, чтобы HC сам это делал.

Согласен.

Цитировать
Еще достает, что HC не сообщает об ошибках когда не удалось записать в кэш

HC пишет об этом в лог в отладочной информации. Когда файл сохранен на диск, то в логе есть строка, типа:

Код:
File D:\HANDYCACHE\Cache\forum.ru-board.com\topic.cgi^\forum=5&topic=21354&start=1340 created,

А когда файл не был сохранен, то такой строки нет!
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #3 : 12 января 2007, 16:18:47 »

Цитировать
P.S. Конечно, это можно "вылечить" несколькими правилами для списка "Переадресация" или "Преобразование URL":


Да, только наверно именно в "преобразовании", т.к. хрен его знает, как сайт на преобразованное среагирует.

Я себе такие правила сделал, чтобы оно было аналогично преобразованию других спецсимволов.

#5#~#True#~#"#~##'#~#True#~#True
#5#~#True#~#<#~##(#~#True#~#True
#5#~#True#~#>#~##)#~#True#~#True
Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #4 : 12 января 2007, 17:13:28 »

Я себе такие правила сделал, чтобы оно было аналогично преобразованию других спецсимволов.

#5#~#True#~#"#~##'#~#True#~#True
#5#~#True#~#<#~##(#~#True#~#True
#5#~#True#~#>#~##)#~#True#~#True
Проблемы нет в опере, т.к. она преобразует спецсимволы сама. Зачем изобретать велосипед? С твоими правилами, при использовании одновременно IE и Оперы, получишь в кеше дубли файлов.
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #5 : 12 января 2007, 18:34:28 »

ну собственно никто не мешает добавить и
#5#~#True#~#%22#~##'#~#True#~#True
#5#~#True#~#%3C#~##(#~#True#~#True
#5#~#True#~#%3E#~##)#~#True#~#True

Но надо помнить и одно из главных правил программирования - программа должна корректно реагировать на непредсказуемые данные на входе.

А вообще, смотрим RFC1738. Там нет ни слова, что некоторые символы должны заменяться на %хх - а только то, что последовательность %хх следует рассматривать как код символа. Да и то - только в "стандартном" НТТР, сервер таковым быть не обязан.
И вообще, единственное, в чём можно быть уверенным - что в URL не будут символы из диапазона х00-х1F...
« Последнее редактирование: 12 января 2007, 19:02:33 от Дем » Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #6 : 13 января 2007, 02:31:41 »

Ещё одна глюка с кешем нашлась.... Обнаружилось несколько файлов с подобным содержимым, несмотря на то, что в браузер он более-менее нормально отдался

Код:
0000000000: 1F 8B 08 00 00 00 00 00 │ 00 03 43 6F 6E 74 65 6E  ***      *Conten
0000000010: 74 2D 54 79 70 65 3A 20 │ 74 65 78 74 2F 68 74 6D  t-Type: text/htm
0000000020: 6C 3B 20 63 68 61 72 73 │ 65 74 3D 77 69 6E 64 6F  l; charset=windo
0000000030: 77 73 2D 31 32 35 31 2D │ 43 6F 6E 74 65 6E 74 2D  ws-1251-Content-
0000000040: 45 6E 63 6F 64 69 6E 67 │ 3A 20 67 7A 69 70 16 02  Encoding: gzip**
0000000050: 00


Т.е. запись строки пошла прямо после заголовка, а контент куда-то пропал...

Да, возможная причина глюка - файл не был докачан до конца (это факт), т.е. архив битый.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #7 : 13 января 2007, 04:16:10 »

Дем
Ну и где тут глюк? Сам пишешь
Цитировать
файл не был докачан до конца (это факт), т.е. архив битый
Тогда чего удивляться, что
Цитировать
запись строки пошла прямо после заголовка, а контент куда-то пропал...
Раз уж речь зашла об официальных документах, то позволю себе цитату из rfc 1738  - Uniform Resource Locators (URL)
Цитировать
Unsafe:

   Characters can be unsafe for a number of reasons.  The space
   character is unsafe because significant spaces may disappear and
   insignificant spaces may be introduced when URLs are transcribed or
   typeset or subjected to the treatment of word-processing programs.
   The characters "<" and ">" are unsafe because they are used as the
   delimiters around URLs in free text; the quote mark (""") is used to
   delimit URLs in some systems.  The character "#" is unsafe and should
   always be encoded because it is used in World Wide Web and in other
   systems to delimit a URL from a fragment/anchor identifier that might
   follow it.  The character "%" is unsafe because it is used for
   encodings of other characters.  Other characters are unsafe because
   gateways and other transport agents are known to sometimes modify
   such characters. These characters are "{", "}", "|", "\", "^", "~",
   "[", "]", and "`".

   All unsafe characters must always be encoded within a URL. For
   example, the character "#" must be encoded within URLs even in
   systems that do not normally deal with fragment or anchor
   identifiers, so that if the URL is copied into another system that
   does use them, it will not be necessary to change the URL encoding.
« Последнее редактирование: 13 января 2007, 05:03:28 от mai62 » Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #8 : 13 января 2007, 12:53:20 »

Цитировать
Ну и где тут глюк?
  Если на диск пишется файл, не содержащий полезной информации - то это что?
Цитировать
Раз уж речь зашла об официальных документах,
Это немножко не про то. unsafe  - это те символы, которые могут быть "съедены" или браузером - # - или всякими промежуточными гейвеями и т.д. Но в последнем случае они вполне могут присутствовать в урле как специально предназначенные для них.
Кроме того, запрос можт делать не браузер, а другая программа (тот же AJAX) - и там строка попадает непосредственно в запрос без всякой обработки на стороне клиента.
« Последнее редактирование: 13 января 2007, 12:57:20 от Дем » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #9 : 14 января 2007, 01:46:39 »

Для обсуждения действующего алгоритма преобразования URL в имя файла в кэше создана отдельная тема!
Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: