TGViewer
Айтигребец Айтигребец @itrower · 768 subscribers
Post #123 236
Небольшая стори о том как мучают джунов. Расследование!

И о том как у сеньора немного подгорело с джуновского задания xD

История :

Есть у меня подруга, которая подалась в QA (тестирование), проходит сейчас стажировочку в одной конторе и вот дали ей задание, звучащее примерно следующим образом :

Понять как работает http заголовок Last-Modified и If-Modified-Since, а так же продемонстрировать в рамках "картинок с учебного сайта" работу этого хедера.

Задание в целом как задание, если бы не одно но. Пишет мне, что уже пол дня убила и не понимает ничерта. Теорию вычитала. Разобралась как через Fiddler "подменить" этот заголовок на нужный. Но почему-то не работает. Классика, явно просто какую-то мелочь пропустила, подумал я и взялся помочь.

И так. Как работает этот заголовок можно прочитать тут. Есть некий сервер и картинки на нём. В ответе картинки сервер отдаёт Last-Modified в формате "Wed, 11 Sep 2019 09:41:31 GMT". Оке, гуд.

Значит.... если мы в запросе к серверу добавим If-Modified-Since со значением "Wed, 11 Sep 2019 10:41:31 GMT", т.е. просто добавив +1 минуту к Last-Modified, то сервер должен отдать нам 304-ый status code, что можно интерпретировать как "дружок, картинка не менялась, возьми-ка её из кеша своего локального". И наоборот, если отнимем минуту - сервер должен нам вернуть 200-ый статус с самой картинкой.

Проверяем. Делаем запросик прям в браузере, меняем его "on-the-fly" и ..... и правда не работает. Странно. Ок, думаю - может я чего не понимаю. Открываем postman, эмулируем запрос там и ... ситуация та же. То ли лыжи не едут, то ли я пхпшник.

Копаем причину!

Даже могучий stackoverflow мне тут не помогает. Думаем. Открываем бутылочку пива. Снова думаем. Какой-то shit, ну чесн-слово. Где-то тут я уже начинаю сомневаться в своей синьористости. Подруга тоже 😂

Окей. По ответу сервера видим так же, что у нас есть заголовок server, который сообщает нам, что на сервере отдаёт статику "nginx/1.18.0 (Ubuntu)". Ничего необычного. Nginx - это классика отдачи статики. Сысоеву привет ^^ (это создатель nginx'а. Недавно была новость, что он покинул проект :( ).
Смотрим на версию nginx'а. 1.18. Гуглим и оказывается, что релиз этой версии был в .... 2012. Что в целом меня тоже не сильно удивляет, конечно, но ... десять лет назад. Смотрим описание ченджлога, а там как раз в новых версиях что-то написано про импрувмент If-Modified-Since!

Нет, ну не может же это быть таким драматическим совпадением, верно? Идём на сайт вики, где установлена последняя версия, проверяем на картинке с их лого - Нет, ну [censored] - всё работает как и ожидается. По пути нагугливаем сайт https://last-modified.com/ru/if-modified-since.html, единственной задачей которого проверить - работает ли If-Modified-Since на сервере. И что мы видим ...

Результат: провалено

Сайт отдал время последней модификации, но не отреагировал на If-Modified-Since. Запрошенное время: Wed, 11 Sep 2019 09:42:11 GMT.

Нет, ну это прекрасно. Т.е. джуну дали невыполнимое задание, получается. Красиво!


Выводы :

1) Если у вас так себе "курсы" - имейте ввиду, что вам просто в теории могут дать кривое задание. Поэтому очень важно учиться у проверенных ребят, иначе и без того сложные задания могут вообще не поддаться. По идее, это супер-редкость, но как видите... шанс есть :)

2) Не стесняйтесь дёргать ваших кураторов, если что-то не получается. Ну или ваших друзей-синьоров. Ну или - хотя бы ребят в айтишных специализированных чатах.

3) Магии нигде в айти нет, всё можно "раскопать". Ну.. кроме нейронок 😂

ps. Забавным открытием было, что nginx настолько умный, что просто поменять, к примеру, месяц - не меняя день недели - не катит. Он валидирует дату не только по формату, но и на логику самой даты. Никаких ошибок в ответе вы конечно же не увидите. Ну и "11 Sep" заменив на "9 Sep", допустим - тоже не катит. Нужно писать "09". кек

Удачи всем в обучении/познании и да прибудет с вами 🍺

#авторское
More from @itrower
  1. Sep 24, 2026О, дивный новый мир Посмотрите как в самом ближайшем будущем будут проводиться интервью с…
  2. Sep 23, 2026Постоянная рубрика: "блекпилл недели (и как с ним быть)" После предыдущего болезненного оп…
  3. Sep 23, 2026Гонка за АГИ
  4. Sep 19, 2026Визуализатор на основе UML? 🐸 Анкл Боб (помните еще такого мужика? автор Clean Code) заки…
  5. Sep 19, 2026https://habr.com/ru/companies/amnezia/articles/1013320/ А говорят хабр уже не торт
  6. Sep 18, 2026RDP на Ubuntu? Линукс это - просто, линукс - это счастье 🥳 ай-ай, не бейте Проблема : мож…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →