Step 3 (S-44749)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14824/step/3

Step 3 (S-44749) 1.png

[00:00 - 00:17] теперь давайте детально рассмотрим как выглядит и запрос а мы видим на данном слайде запрос версии 1 0 а дело в том что живешь 1 0 1 1 есть некоторые отличия


[00:17 - 00:35] синтаксис запроса давайте сначала рассмотрим запрос версии 1 0 что можно сказать во 1 to plan текст то есть мы видим что запрос состоит из нескольких строк а перевод строки то есть просто реселлерских строк


[00:35 - 00:51] перевод перевод строки используются символы слэш slash а именно такая последовательность в принципе в обсервера зачастую понимают и просто быть слэш


[00:51 - 01:09] это не соответствует стандарту а поэтому рекомендуется использовать именно сочетание букв слэш slash а запросе мы видим что 1 строчка отличается от остальных


[01:09 - 01:27] это основная строка запроса а в этой строке мы можем выделить 1 слово метод запроса метод запроса указывает на то какую операцию мы осуществляем


[01:27 - 01:43] в данный момент а то есть грубо говоря он говорит о том что во в сервер должен для нас сделать далее идет строка в которых содержатся документа


[01:43 - 01:59] здесь все довольно понятно с помощью мы должны передать документы для того чтобы сервер знал а какой именно документ на мужа а стоит обратить внимание что


[01:59 - 02:16] документа версии 1 0 передается полной то есть начиная с hd теперь а содержат имя и полный путь документ а забота клиента заключается в том чтобы подключиться к правильному сервера


[02:16 - 02:31] как вы понимаете нельзя просто подключиться к произвольному серверу передать запрос содержащий произвольный домен домен которая передается в запросе должен соответствовать ip адресу того сервер к которому вы подключаетесь


[02:31 - 02:50] и последнее слово в 1 строчке это версия протокола ее необходимо указывать для того чтобы сервер мог понять какой набор опций поддерживает данный клиент после


[02:50 - 03:09] 1 строчке идут а дополнительные строчки содержащие заголовке так называемый заголовке а как мы видим в заголовке состоит из 2 частей у заголовка есть заголовка есть а


[03:09 - 03:28] имя есть значение вот например заголовка значение заголовки не могут имена заголовков не могут содержать пробелы а в принципе они содержат в основном буквы цифры и


[03:28 - 03:43] иногда - а каноническом виде считает что заголовке написано то есть каждое новое слово с большой буквы а однако


[03:43 - 04:02] это не обязательно условия и а в некоторых случаях заголовки передаются в другом виде например а ты мог есть только 1 буква заглавная как правило клиент адаптируюсь переводят заголовки стандартный вид


[04:02 - 04:20] а значение заголовков а может быть очень различными в зависимости от самого заголовка а полный синтаксис можно узнать соответствующим овца сейчас это не очень важно чтобы заголовке а не нарушали общую структуру


[04:20 - 04:38] то есть она например не содержали переводов строк а после всех запросов идет пустая строка то есть считается что заголовке закончились тогда мы встретили пустую строку после пустой строки а может и тело запроса


[04:38 - 04:56] если оно предусмотрено данным методом как выглядят запрос версии 1 1 1 1 то более современная версия протокола http а в принципе в общем и целом выглядеть также для нас отличие заключается в следующем


Step 3 (S-44749) 2.png

[04:56 - 05:13] факторах которая передается запросе не абсолютной и относительной но вместо этого cost на которое запрос передан в виде отдельного заголовка


[05:13 - 05:29] виде заголовка host это сделано исключительно для облегчения работы веб серверов которые обслуживают несколько доменов одновременно виртуальный хостинг кроме того


[05:29 - 05:45] запросе версии 1 1 присутствуют дополнительные заголовке то заголовку просто больше частности появляется заголовок connection а заголовок connection а позволяет управлять соединения


[05:45 - 06:03] между 2 2 точками соединен протокол http 1 1 а в частности в данном случае он говорит о том что соединение не должно быть закрыто а


Step 3 (S-44749) 3.png

[06:03 - 06:19] отлично как выглядят аш пи ответ ответ а также является текстом то есть мы можем его получить а текстовом редакторе


[06:19 - 06:35] а начало очень похоже он состоит из строчек перевод строки также бэкслэш robox ваша 1 строка это строка в ней содержатся версия протокола который отвечает сервер а


[06:35 - 06:54] она не всегда может соответствовать версии клиента предполагается что клиент и сервер выберут минимальную поддерживаемую версию например если клиент поддерживается 6 p 1 1 сервер только 1 0


[06:54 - 07:11] а клиент должен использовать версии 1 0 итак нас есть версия по которой работы серверов после чего идет некоторое число это число кот ответ


[07:11 - 07:26] а это говорит о том результате операции и после идет текстовая расшифровка текстовая расшифровка это фактически тот же самый код ответа только для человека


[07:26 - 07:42] принципе все программное обеспечение оно ориентируются именно это число а текст который находится справа большого значения не имеет а ниже идут заголовки ответ


[07:42 - 07:58] синтаксис точно такой же как в запросе то есть ключ значение а через перевод строки после чего идет пустая строчка после чего а передается а сам документ


[07:58 - 08:13] заметим задач которые можно положить в 1 очередь это каким то образом а указать content type документа и его длину


[08:13 - 08:30] это 1 и тоже вот здесь указан в документах этого текста что мы и опционально указаны его кодировка то есть коробка в которой собственно это документ создан чтобы браузер


[08:30 - 08:45] отличить допустим у т 8 а ц 12 51 кодировку придается в заголовке content type фактически content type вот единственное заголовок который нужен браузеру обязательно нужен браузер чтобы отобразить


[08:45 - 09:00] без остальных по заголовку браузер может обойтись content type нужен обязательно а после всех заголовков идет пустая строка и тело ответа таким образом создается


[09:00 - 09:17] а тело ответа длина ответа то есть мы должны знать тогда прекратить какой длины у нас документ сколько нужно считывать список существуют разные подходы а


[09:17 - 09:33] 1 из подходов заключается в том чтобы читать 100 тех пор пока соединение не будет закрыта мы видим что здесь указано connection closed специальный заголовок который говорит о том что соединение нужно закрыть и не указана длина другой вариант заключается в том чтобы


[09:33 - 09:49] передавать специальный заголовок как правило в сервер передает заголовок content length длина документа а тогда соединения можно оставить открытым


Step 3 (S-44749) 4.png

[09:49 - 10:06] повторюсь что ж теперь запроса status строке запроса заголовков и тела а давайте подробнее рассмотрим какие методы могут быть во всей цепи запросе а


Step 3 (S-44749) 5.png

[10:06 - 10:21] самый распространенный метод это метод гет он нужен для получения документ мы говорили что основной сценарий работы приложения это загрузка документов сервера на клиент а метод


[10:21 - 10:39] говориться серверу верни мне документ пожалуйста по указанным уровнем это основной метод который используется далее есть метод хет санкционирует он точно так же как метод изучения


[10:39 - 10:55] сам документ не нужен этот счет говорит о том что верни мне полностью все тоже самое что и придет но без тела документ то есть получения только заголовков и статуса статуса ответ


[10:55 - 11:09] а зачем этот метод нужен этот метод нужен а когда нам нужно проверить например наличие документа а это часто используется поисковыми ботами которая проверяет актуальность


[11:09 - 11:28] информация которая находится у них они выполняют агент запросы и получать только заголовки только информация экономит трафик а если документ по все запросам и видит что документ устарел


[11:28 - 11:45] а то есть на сервере более новый документ можно получить полноценный get запрос и получить весь документ далее по запросу по запросу то отправка данных на сервер а причем


[11:45 - 12:02] отправка произвольных данных эти данные могут быть в виде какого то документа либо в специальном а виде в котором они передаются при отправке форм то есть браузера отправляется форма


[12:02 - 12:17] на сервер данные формы кодируется специальный специально разновидность документ а вот эти 3 запроса не основные для в приложении


[12:17 - 12:36] причем все это используется даже редко где то post постоянно помимо этого а в протоколе http существуют и другие методы например метод вот этот пункт это также отправка данных но это отправка документов целиком


[12:36 - 12:51] этот метод означает что нужно разместить передаваемые документ точно указано то есть это наоборот загрузка документа это удаление документов


[12:51 - 13:06] эти методы они стандартны для протокола http но они как правило отключена на публичных веб серверах по простой причине потому что разработчики приложений не хотят чтобы


[13:06 - 13:25] кто угодно мог загружать а какие то произвольное документа которые лягут на веб сервер приложение далее существуют методы коннект используется крайне редко они используются для проксирования либо для получения информации


[13:25 - 13:44] сервера и существуют методы расширения протокола http есть расширения называется новый dove этот протокол предназначен для более удобного


[13:44 - 14:00] богатого управления коллекции списка файлов на удаленном сервере он позволяет загружать удаленно копировать перемещать файлы создавать директории на веб сервере эти методы тоже как правило отключена


[14:00 - 14:16] для широкого использования то есть на публичных серверах вы скорее всего их найдете однако методов и методов уделит они используются часто во внутренних интерфейсах для загрузки


[14:16 - 14:35] с 1 части веб приложения на какую то другую часть то есть для передачи передачи файлов внутри самого веб приложения внутренний интерфейс а здесь они используются довольно часто теперь давайте посмотрим какие


Step 3 (S-44749) 6.png

[14:35 - 14:52] коды ответа присутствует в протоколе http то есть что может ответить а вы в сервер когда к нему отправлен запрос во 1 следует сказать что кода ответы делятся на несколько групп мы знаем что это число


[14:52 - 15:11] они делятся на несколько групп по 1 цифрой этого числа а те которые начинаются с единицы это информационная информационной кода они используются довольно редко они а предназначена для координации действий клиента


[15:11 - 15:29] и а например в некоторых случаях клиент перезагрузкой большого файла ожидает получение информационного когда то что нибудь действительно примется вот используется очень редко а кода ответы которые начинаются с двойки они говорят


[15:29 - 15:43] более менее успешное выполнение запрос а те которые начинаются стройке это перенаправление перенаправление а означает что


[15:43 - 16:00] документ может быть получен с другом то есть что данный запрос завершился неудачно документ можно а найти по другому урлу либо что существуют другие версии документов а


[16:00 - 16:18] ошибки которые начинают кода ответы которые начинаются с четверки это ошибке на стороне клиента а то есть запрос осуществить не удалось проблема где то у клиента ошибки которые начинаются кодек том числе с пятерки это ошибки на стороне сервера


[16:18 - 16:35] а давайте посмотрим подробнее наиболее распространенные куда ответом сейчас разберем которое используется наиболее часто при веб разработки итак


Step 3 (S-44749) 7.png

[16:35 - 16:53] icq 200 ok 1 на что нужна чего нужно добиться в приложении это что бы оно дало хотя бы 1 документ с кодом 2 строки означает что запрос успешно выполнен при этом


[16:53 - 17:10] в теле ответа а будет документ который мы возвращаем возвращается клиенту помимо 200 существует код 204 он менее распространен


[17:10 - 17:29] он говорит о том что запрос успешно выполнил но документов нет то есть документ пусто но тем не менее вы все равно считает что запрос вполне успешно есть пустой файл а далее


[17:29 - 17:48] 301 302 304 301 это так называемый а перманентный редирект а при этом коде ответа сервер не возвращает документ вместо этого он возвращает новый документ


[17:48 - 18:07] а этот код ответов применяется при перемещениях документ когда у вас был некоторый файл и вы его вершины что должен лежать в другом месте переместили навсегда в другое место а по старому урлу а вам нужно настроиться так что отдавал


[18:07 - 18:24] код ответа 31 тогда запросы которые приходят на старые урлы они будут перенаправлены на новый уровень то есть браузер последует за этим документ 302 это временный редирект


[18:24 - 18:41] в чем отличие между 301 300 301 редирект может запоминаться кэшироваться на стороне браузера то есть предполагается что документ назад больше никогда не вернется и поэтому в следующий раз браузер может сразу идти по новому пути по новому урлу


[18:41 - 18:57] 302 означает что браузер должен а выполнить запрос по новому году оно запоминать это не должен то есть он должен каждый раз когда получила 302 редирект выполнять запрос по новому урлу


[18:57 - 19:14] а причем это get запрос код ответа 302 часто используется при обработке фото а для того чтобы избежать ошибок с повторной отправке а теперь


[19:14 - 19:31] код ответа 304 304 not modified документ не изменился использовать а этот кот ответ использоваться совместно со специальным заголовком так называемый conditional get a


[19:31 - 19:50] веб клиент частности браузер при загрузке документа может иметь у себя уже сохраненную копию этого документа например мы загружали вот страничку все картинки сохранились потом переходим на соседнюю веб страницу а там те же самые картинки используется тот же самый логотип


[19:50 - 20:07] а у нас этот логотип лежит на диске клиента поэтому при запросе указывать клиент указывает на специальный заголовок о том что этот файл есть и он а от такого то числа точно последнее изменение такого то числа


[20:07 - 20:24] если вы в сервер считает что файл не изменился он может ответить 304 304 означает что файл остался неизменным и нужно использовать тот который есть в кэше браузера а далее


Step 3 (S-44749) 8.png

[20:24 - 20:40] 2 порция кодов ответа те которые начинаются с четверке 400 bad request это говорит о том что сервер не смог забрать а запрос клиента то есть это неправильный синтаксис запроса


[20:40 - 20:58] в таком виде а это случается очень редко потому что обычно клиента они все таки правильно реализует протокол http это бывает часто связано слишком длинной строкой запроса то есть хотя протокол http не накладывает никаких ограничений на длину строки


[20:58 - 21:16] а в сутки выделяет какую то область памяти буфер чтобы прочитать запрос и поэтому вопрос может туда не поместиться его 1 2 четверть 400 код ответа 401


[21:16 - 21:35] 401 а означает что требуется авторизация то есть для доступа к данному ресурсу пользователь должен ввести логин и пароль все просто когда браузер получит код ответа 401 он покажет специальный диалог для ввода логина и пароля


[21:35 - 21:53] 403 forbidden означает что нет доступа к ресурсу а обычно они работают в паре с 401 то есть 401 означает что для доступа к ресурсу нужен логин пароль а 430 означает что например логин пароль не подошел


[21:53 - 22:09] либо нет доступа по другой причине так или иначе эта проблема клиента другому клиенту может провести больше 404 очень популярная ошибка а означает то что документ не найден


[22:09 - 22:25] а браузер сделал запрос о на сервере этого документа нет таком случае сервер выдает ошибку 404 а в большинстве случаев это означает что вы программисты где то ошиблись в написании


[22:25 - 22:41] далее идут коды ответа начинающееся с пятерке 500 internal server error это очень популярная среди начинающих программистов ошибка она означает внутреннюю ошибку сервера


[22:41 - 22:59] веб сервер как готовый продукт довольно редко содержится в самом коде ошибки и редко возвращались 500 ошибку однако аппликейшн сервер который запускает вашего приложения генерировать динамически страничке


[22:59 - 23:15] очень часто может отдавать прошивку а сервер отдает 500 ошибку в случае если а скрипт серверный скрипт приложение


[23:15 - 23:32] а не сработал должным образом в случае если приложение написано на языке python а произошел какой то необработанные исключения был выброс выброшено исключение вы его не обработаны это привело к тому что а какие что сервер вернет ошибку 500


[23:32 - 23:49] 502 ошибки 502 504 они связаны с проксированием а собственно про проксирование мы поговорим чуть позже суть заключается в том что иногда а сервер


[23:49 - 24:08] передает либо проксирует запросы которая пришел к нему к другому в обсервер а и его когда тот который стоит позади него есть проксирует сервер не отвечает либо отвечает с превышением таймаута то есть не дождались ответа


[24:08 - 24:22] коды ошибок 502 и 504 как правило это означает что какая то проблема с администрированием серверов и нужно об этом сообщить