Обработка списков

Версия 1 oleg
на июл 02, 2015 15:53.

по сравнению с
Текущая oleg
на мар 11, 2016 15:47.

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (2)

просмотр истории страницы
Carbon Reductor выполняет предварительную обработку списков перед тем как загрузить их в ядро.

Это сделано по той причине, что выносить нормализацию URL в runtime перед поиском в базе - очень затратно, поэтому в userspace генерируются некоторые возможные расхождения в поведении разных браузеров/библиотек по работе с URL, а затем все полученные варианты заносятся в ядро.

Возможно это немного смутит - например удаление домена 3 уровня www. у части ссылок.

Вот часть таких преобразований:
* дублирование в случае uppercase в Host.
* дублирование для некоторых ресурсов, имеющих несколько доменов. Пока хардкодом.
* Отрезание www. для некоторых доменов (в результате блокируются все субдомены).
* URL с точкой в конце Host лишаются этой точки, её проверка вынесена в ядро.
* Кириллические домены приводятся к IDNA-виду.
* Отсекается / в конце большинства URL.
* В случае с якорями (#something) URL дублируются с и без них.
* Кодировка GET-запроса, даже экранированного проходит с перебором.
* Для URL с HTTPS добавляется "дубликат" с доступом по HTTP.
* и ещё несколько обработок с достаточно частными случаями.

Как редуктор потом ведёт себя с обработанными списками можно прочитать в статье [про обработку HTTP запросов.|reductor5:HTTP]