- 1
- 2
- 3
- 4
- 5
GET /file HTTP/1.0
Host: site.com
HTTP/1.1 302 Found
Location: http://site.com
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−28
GET /file HTTP/1.0
Host: site.com
HTTP/1.1 302 Found
Location: http://site.com
Так вообще можно?
3_14dar 27.11.2016 20:55 # −4
rotretS 27.11.2016 21:38 # −1
Я у себя тоже такое запилил. Если страница не найдена, редиректит обратно на хост.
3_14dar 27.11.2016 22:19 # −1
inkanus-gray 27.11.2016 22:23 # +4
> Host:
Вы либо крестик снимите, либо трусы наденьте.
3_14dar 27.11.2016 23:48 # −2
inkanus-gray 28.11.2016 06:15 # +6
https://tools.ietf.org/html/rfc1945#section-10
Сервер может проигнорировать заголовок Host, если указан протокол HTTP/1.0. А может вообще послать куда подальше с кодом 400 Bad Request (ибо нестандартные заголовки должны начинаться с буквы X).
Первоначально предполагалось, что одной паре IP:порт может соответствовать один сайт (как в FTP). Ни о каких хостах в запросе и не думали.
Потом айпишников перестало хватать и стали думать, как это можно исправить. В HTTP/1.0 можно сделать запрос так:
А в HTTP/1.1 добавили заголовок Host:
Причём Host теперь нужно указывать: https://tools.ietf.org/html/rfc2616#section-14.23
Однако, если имя сервера можно вывести из URL, то заголовок Host пустой:
Итак, Host — неотъемлемая часть HTTP/1.1.
gost 28.11.2016 18:50 # 0
О нет, Инканус заразился!
Dr_Stertor 28.11.2016 20:08 # 0
Мы не можем до конца исключать тот факт, что г. проверяющий - и есть инканус.
gost 28.11.2016 20:35 # 0
inkanus-gray 28.11.2016 06:20 # +1
3_14dar 28.11.2016 06:29 # −1
inkanus-gray 28.11.2016 09:22 # +2
А в общем случае можно обломаться.
Dr_Stertor 27.11.2016 22:34 # 0
CTEPTOP_TUPOI_SHIZIK 27.11.2016 22:40 # −2
Dr_Stertor 27.11.2016 22:43 # −1
3_14dar 27.11.2016 23:48 # −2
CTEPTOP_TUPOI_SHIZIK 28.11.2016 00:15 # −1
3_14dar 28.11.2016 00:25 # −2
Как правильно делать такую вещь?
CTEPTOP_TUPOI_SHIZIK 28.11.2016 00:38 # −1
3_14dar 28.11.2016 02:32 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 03:01 # −1
rotretS 28.11.2016 01:41 # −1
Если сервер не вернул 200, обнулить буфер и вернуть фолс.
CTEPTOP_TUPOI_SHIZIK 28.11.2016 01:42 # −1
rotretS 28.11.2016 01:46 # −1
Сам хоть понимаешь, какой хуйню сморозил?
CTEPTOP_TUPOI_SHIZIK 28.11.2016 02:02 # −1
rotretS 28.11.2016 02:08 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 02:21 # −2
rotretS 28.11.2016 02:29 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 03:00 # −1
Вообще, я не понял зачем ты стал говорить о какой-то ненужной процедуре. Мне это не интересно.
rotretS 28.11.2016 11:00 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 23:03 # −1
guest 02.12.2016 03:30 # −1
это же моникер из кома
AnalniyTerzatel 02.12.2016 12:12 # −1
3_14dar 28.11.2016 02:32 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 02:58 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 01:44 # −2
3_14dar 28.11.2016 02:33 # 0
404 с http заголовком?
rotretS 28.11.2016 02:34 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 02:53 # −1
3_14dar 28.11.2016 04:15 # −1
Vindicar 28.11.2016 09:45 # −1
Если почитать http://www.w3schools.com/tags/att_meta_http_equiv.asp
"The http-equiv attribute can be used to simulate an HTTP response header."
Заголовок Refresh вполне себе существует, и (по идее) должен обрабатываться если отдан сервером. Правда, ЕМНИП, он строго HTTP/1.0, но клиенты(читай - браузеры) часто закрывают на это глаза.
Я даже как-то делал говно-скринкаст на этом принципе - отдавал картинку с этим заголовком, и периодически сбрасывал в файл свежий скриншот.
3_14dar 28.11.2016 17:17 # −1
CTEPTOP_TUPOI_SHIZIK 28.11.2016 02:56 # −1
3_14dar 28.11.2016 04:14 # −1
guest 29.11.2016 19:12 # −1
AnalniyTerzatel 29.11.2016 22:45 # −1
rotretS 28.11.2016 01:43 # −1
Vindicar 28.11.2016 09:48 # −1
Если не поддерживают, значит, либа говно.
rotretS 28.11.2016 11:04 # −1
https://msdn.microsoft.com/en-us/library/ms775122%28v=vs.85%29.aspx
https://msdn.microsoft.com/en-us/library/ms775123%28v=vs.85%29.aspx
Она проверяет только код 404 (в этом случае вернет фолc). По редиректу не пойдёт.
@ Есть библиотеки, предоставляющие функциональность HTTP-клиента, а они должны поддерживать не только редиректы, но и прочее, начиная с кукисов
Согласен. Но таких, что поддерживает редиректы - раз и обчёлся. Во многих случаях приходилось писать обработчик самому. CURL их точно поддерживает - я с ней работал,- а еще Indy.
3_14dar 28.11.2016 17:19 # −2
Редиректы 302 при скачивании файлов вижу не первый раз.
AnalniyTerzatel 28.11.2016 17:26 # −1
Dr_Stertor 28.11.2016 17:51 # −2
AnalniyTerzatel 28.11.2016 17:58 # −1
Dr_Stertor 28.11.2016 20:09 # −1
Dr_Stertor 28.11.2016 17:47 # −2
rotretS 28.11.2016 01:55 # −1
rotretS 28.11.2016 01:56 # −1
rotretS 28.11.2016 02:04 # −1
1. Перед отправкой на сайт, процедура заполняет заголовки запроса и в цикле начинает слать запросы, каждый раз проверяя код, который вернул сервер.
Если код в пределах 300...303, функция парсит значение поля Location, подставляет его вместо URL и повторяет запрос (при этом, если запрос был POST, он меняется на GET, чтобы предотвратить повторную отправку формы), если нет - то цикл прерывается.
3_14dar 28.11.2016 02:33 # −1
rotretS 28.11.2016 02:37 # 0
Запили что-то похожее.
3_14dar 28.11.2016 04:16 # −1
rotretS 28.11.2016 11:05 # −1
3_14dar 01.12.2016 23:33 # −1
bayan 01.12.2016 23:33 # −1
AnalniyTerzatel 01.12.2016 23:36 # −1
3_14dar 28.12.2016 19:59 # −1
Все равно нихуя не читаемо. Хотя бы отступы делал.
ProctologistForYou 29.12.2016 22:52 # 0