Step 4 (S-44751)

From Stepik Wiki
Revision as of 13:39, 6 August 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

Step 4 (S-44751) 1.png

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


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


[00:31 - 00:48] в протоколе http заголовки которые эти механизмы обслуживать сейчас просто перечислим данные из головки а если рассматривать в заголовке то их можно условно разделить на 3 группы это


[00:48 - 01:05] а заголовке общее которые могут присутствовать как запросе так и в ответе http заголовки только запроса и заголовке только ответа а какие бывают общие заголовки эти заголовки


[01:05 - 01:23] правила необходимо для управления соединением либо для управления форматом содержимого то есть форматов того что передается в теле запроса а поэтому они могут присутствовать в запросе так в ответе


[01:23 - 01:41] правление соединение требуется двухстороннего принятия решения и осуществляла raw формат содержимого то есть тело запроса может быть как то есть тело запроса так и в области ответ а итак


[01:41 - 01:58] 1 самый важный заголовок это content type content содержится тип документа который указывает серверу что это за документ с какого вида ты картинку что то либо xml


[01:58 - 02:14] и а указывают также некоторые опции например для вполне актуальна указание кодировки в час этот заголовок content length указывает длину сообщений


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


[02:31 - 02:49] отправляется а зачем документа данные например формы поэтому чтобы ввести какой то общий термин тело запроса либо тела ответы по сообщениям с мест


[02:49 - 03:08] content length content love содержится длина тела запроса а content encodings заголовки content encoding содержится кодирование документа например указывается что документ


[03:08 - 03:24] с помощью в zip помимо content котик а в принципе теплые они очень похожи отличия чисто семантическое content encodings говорит о том какое кодирование применено


[03:24 - 03:42] к исходному документы по трансферам causing говорит о том какое кодирование применено для передачи этого документа а например транспорт транспорт кодинг может содержать значение чем то это означает что документ


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


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


[04:16 - 04:34] то есть очевидно что такое такой документ передать передаваемые от куска нужно определенным образом читать заголовок connection а заголовок апгрейд эти заголовки отвечают за управление соединением между 2 а


[04:34 - 04:49] непосредственно с соединенными узла то есть между клиентом и непосредственно с днем с ним почему мы говорим непосредственно соединенном а в протоколе http имеет место проксирование когда


[04:49 - 05:07] веб клиент делает запрос на сервер проксирует передает запрос а в следующем серверов в таком случае клиент он получает документ как бы через посредника нас есть 2 и соединения между клиентом и 1 сервера


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


[05:24 - 05:41] необходимо сменить тип соединения то есть не протокол по которому работает соединение а в частности он используется при изменении при запуске протоколов а заголовок connection позволяет управлять соединением


[05:41 - 05:57] например если в заголовке connection указывается специальное значение close соединение должно быть закрыто в принципе pro присоединением поговорим а


[05:57 - 06:13] конце концов он двурук а в заголовке connection содержится как не странно названия тех заголовков которые должны быть отброшена при проксировании соединения а


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


Step 4 (S-44751) 1.png

[06:32 - 06:51] какие заголовки могут присутствовать только запрос например заголовок авторизуешь заголовков translation содержит в себе ключ имя пользователя и пароль либо


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


[07:06 - 07:25] а сессия она серверов про механизм покупки следует сказать отдельно а мы знаем что теперь это протокол запрос ответ каждый следующий запрос может прийти к новому к новому серверу


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


[07:40 - 07:59] при каждом запросе передавать логин пароль по которому можно определить сер а либо можно передавать а спасенную информации ключ сессии обычно используют 2 вариант и передают со головке куки а браузер


[07:59 - 08:15] имеет встроенный механизм управления куками поэтому автоматически для каждого запроса определяется cookie которые должны быть отправлены а да это очень просто заголовок содержит


[08:15 - 08:32] предыдущего документа грубо говоря контекст запрос например если вы загрузили основную страничку браузера загрузил самую страницу а после этого начинает загружать а связанное ресурсах картинке то а в гет запросе


[08:32 - 08:49] за каждой картинке будет передаваться заголовок реферера а соответствующие первоначального документа то есть при запросе картинки мы будем знать на какой страничке она потребовалось а при переходе по гиперссылкам


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


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


[09:24 - 09:40] а иногда в сервер желает отдавать разные ответ для разных клиентов наиболее распространенный вариант когда


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


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


[10:17 - 10:33] а далее заголовок из modifiers since а мы уже говорили про него этот заголовок позволяет реализовать так называли conditional get


[10:33 - 10:48] условное получения документа работает а вместе с кодом ответа 304 modifier давайте еще раз проговорим как он работает а допустим браузер


[10:48 - 11:04] сгружают некоторые документ а как правило это связано ресурс с картинками все со стилями браузер имеет встроенный кэш то есть он может просто сохранить документ на диске клиентов


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


[11:22 - 11:40] есть у него в локальном кошелек а ты сам то что он буквально недавно загружал картинку поэтому в запросе за этой картинкой работа художников грузится 1 в запросе он добавляет специальный заголовок и с modifiers since


[11:40 - 11:58] и в этом заголовке указывается время последнего изменения документа то есть то время когда он в предыдущий раз получил данные все с асфальта если сервер понимает что


[11:58 - 12:16] клиенты находятся свежий файл вместо того чтобы отдать файл с кодом 200 он отдает его с кодом 304000 не возвращает файл отдает код 304 а код 304 позволяет браузеру использовать тот документ который у нее есть выше таким образом сокращая


[12:16 - 12:34] объем передаваемого трафика а далее все заголовков акцепт а эти заголовки нужны для согласования форматы документов а


[12:34 - 12:50] их много а в частности указывается акцептом кодинг accept language а собчак это тому подобное а браузер передает эти заголовки чтобы показать какие документы он готов принять например


[12:50 - 13:08] готов ли он принимать сжатый с помощью gzip документа либо он не умеет этого делать а такой заголовок может потребоваться когда вы отлаживаете какой то сервис с помощью телнета если вы не хотите


[13:08 - 13:23] собственно мозга декодировать zip разархивировать документ вы можете указать что вы готовы принимать только plan текст не готова принимать тогда сервер


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


Step 4 (S-44751) 2.png

[13:42 - 14:01] 301 302 а мы говорили что 301 302 это перенаправление когда сервер не желают отдавать документ а вместо этого говорит что документ нужно загрузить еще раз с другого угла а другой как раз передается в заголовке локейшен


[14:01 - 14:19] то есть если браузер получаю код ответа 302 получает заголовок локейшен а он запросит документ снова а далее заголовок заголовок сотку


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


[14:38 - 14:54] сервер 1 раз проверяет авторизацию и с помощью set cookie устанавливает клиенту передает длинные длинные длинные строчку а которая и является ключом сессия а


[14:54 - 15:11] браузер запоминает эту строчку себя и возвращает его на сервер при каждом последующем запросе в заголовке куки то есть все таки это заголовок ответа когда сервер передает клиенту а куки это запрос заголовок во запросов когда


[15:11 - 15:26] клиент возвращает собственно по этой куки может понять какой именно пользователь к нему пришел далее а заголовок класс modifier


[15:26 - 15:43] этот заголовок опять таки а работает вместе с механизмом conditional get то есть с кодом ответа 304 а когда документ когда браузер возвращать документ в 1 раз он для каждого документа


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


[16:01 - 16:18] потом вернет в заголовке и в modifier since если да то совпадают с работает механизм conditional get и еще пару заголовков заголовок заголовок заголовок сервер очень прост в нем содержится информация права


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


[16:35 - 16:54] а заголовок date в нем передается на сервер а этот заголовок очень важен по следующей причине поскольку мы говорим про распределенную систему а вот сервер и клиент могут находиться во 1 в разных часовых поясах


[16:54 - 17:10] а во 2 они могут просто не синхронизированы с них могут сам может происходить расхождение часов где то что настроенными точно а как обеспечить хороший механизм работы


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


[17:29 - 17:47] правильное время на этом обзор протокола http можно считать завершенным а еще раз повторюсь что протокол состоит из запроса и ответа после этого соединения следует закрыть а


Step 4 (S-44751) 4.png

[17:47 - 18:02] и запросе в ответе передаются заголовки которые управляют различными опциями протоколы и соответственно тело запроса д а


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