6. Web-технологии. Протокол HTTP | Технострим

6. Web-технологии. Протокол HTTP | Технострим

SUBTITLE'S INFO:

Language: Russian

Type: Robot

Number of phrases: 1148

Number of words: 5869

Number of symbols: 33643

DOWNLOAD SUBTITLES:

DOWNLOAD AUDIO AND VIDEO:

SUBTITLES:

Subtitles generated by robot
00:04
что происходит после того как установлена степи соединения и возможно опционально установлена tls соединение то есть ключ на шифрование далее необходимо каким-то образом получить документ сервер собственно здесь в игру вступает основной протокол о котором работают в приложении это протокол http гипертекст transfer protocol как следует из названия этот протокол
00:35
специально предназначен для передачи гипертекстовых документов то есть в первую очередь html-документов в чем особенность почему нельзя просто передавать документы через протокол tcp просто послать файлы по этому протоколу существует ряд причин существует большое количество задач которые нерешенные в
01:07
протоколе теперь и должны быть решены в протоколе более высокого уровня и так первая задача заключается в том что нужно каким-то образом структурировать наш поток протокол сети позволяет передавать данные сплошным потоком байт которого нет в общем то начала и нет конца клиент и сервер которые взаимодействуют по протоколу tcp должны каким-то образом договориться каким в каком виде данные
01:40
будут делиться на какие-то части то есть когда можно считать что запрос закончен либо когда можно считать что ответ получен нужна какая-то внутренняя структура для данных передаваемых по себе это первая задача которая решает протокола степей то есть эта структура передачи данных протокола степей позволяет но его основное назначение это передачи документов помимо передачи документов он позволяет передавать эту информацию о документах
02:16
как мы говорили у каждого документа в сети уругвай двеpь есть маем тип то есть весьма им типа не будет понятно что с этим документом делать вот моим тип это хороший пример метра информация которая должна идти с документов другой пример это длина документа то есть как мы видели при работе с присоединением не понятно насколько большой большой объем данных передается можно читать и соединение
02:48
пока она не будет закрыта но это не очень удобный подход желательно заранее знать размер документа который мы получаем это второй пример мета информации которая передается с документу помимо передачи документов и дополнительный метод информации к нему при работе гипертекст вами документами необходимо иногда бывает необходима авторизация
03:19
это присутствует в большинстве протоколов потому что документы могут быть публичными доступными всем а могут быть приватными то есть доступными только узкому кругу лиц поэтому нам нужно каким-то образом организовать проверку прав доступа сообщать пользователю о том что нужно предоставить какие-то credan шила то есть логин пароль например либо сказать ему что доступа нет то есть нужно уметь
03:51
авторизовать пользователя в частности эта задача решается в по такой лишь те теперь требуется поддержка сессии это требование оно вызвано тем что протокол http в частности работает по принципу запрос ответ если бы протокол предполагал постоянное соединение с этим было бы меньше проблем но тем не менее протокол http не предполагает
04:23
постоянного соединения предполагается что соединение постоянно открывается и закрывается и мало того каждый новый документ он может быть загружен с нового сервера ну мы говорили что сайт может располагаться на нескольких серверах каждый новый запрос может приходить на новый сервер поэтому необходимо каким-то образом поддерживать состояние то есть чтобы web сервера могли знать какой именно пользователь к ним приходит с документом чтобы могли различать
04:53
пользователей друг между другом такая задача также ставить передашь типе и решается в нем кроме того что теперь позволяет решать множество задач связанных с оптимизацией передачи например каширования документов каширование документов позволяет не передавать документы если они уже присутствуют в клиенте ну например в классическом приложение вы переходите с
05:25
одной страницы на другой html документ и которые вы смотрите они могут отличаться потому что вы смотрите стандартную стране разные страницы а вот стиле и java script и то есть вспомогательные ресурсы они зачастую на этих страницах совпадают потому что вы смотрите страница одного сайта который в одинаковом дизайне и в общем то нет смысла передавать их два раза нужно каким-то образом кэшировать это решается также можете протоколе выше
05:57
теперь протоколе есть поддержка согласования документов это позволяет клиенту серверу согласовать в каком виде они будут принимать документы например сервер клиент может предложить сжимать документ с помощью гриппа либо передавать его только на французском языке сервер может с этим согласится либо отказаться то есть с помощью специальных опций клиента сервера могут договориться
06:28
о том в каком виде передавать данный документ и управление соединения протокол tcp он не предусматривает никакого управления кроме как закрытие то есть в какой момент закрывается соединение протокол http позволяет более гибко управлять соединением в частности закрывать его либо оставлять открытым для последующих запросов итак давайте посмотрим как схематически
07:01
выглядит работа протокол http работает поверх протоколов tls опционально шифрование и паях протокол эти себе протокол http работает по принципу запрос ответ это означает что клиент формируют некоторый объем данных запрос отправляет его на сервер вот первая стрелочка это отправка запроса
07:35
сервер генерирует ответ и возвращает его клиентов стрелочка номер два после чего вопрос-ответ считается законченным и собственно говоря браузер должен переходить к следующему вопросу в чем ключевые особенности протокола http во первых этот протокол работает поверх typing tls в отличие от некоторых других некоторые могут работать по верху и т.п.
08:07
для протокола тисе пи нужно чтобы под ним была надежное соединение с гарантированной доставкой теперь протокол http является протоколом запрос ответ в отличие от некоторых других протоколов которые могут предполагать там streaming данный протокол http не поддерживает соединение то есть изначально протокол является stay close
08:39
соединение между клиентом и сервером не поддерживается протокол http позволяет передавать информацию о клиенте специальных заголовков но тем ни менее нет никакой гарантии что один клиент будет работать с каким то определенным сервером той сервер не может хранить у себя в памяти постоянно информацию об одном клиенте то есть так называемый state далее протокол http является текстовым протоколом как мы видели это означает что данные
09:14
передаются в виде plain текста простого текста их можно просматривать с помощью текстовый редактор и с помощью утилита telnet как мы это делали можно вручную формировать запросы и получать ответы и протокол http является расширяемым протокол это следствие с того что он текстовый расширение текстов протокола в принципе происходит очень легко в протоколе http
09:45
различные опции передачи сдаются в виде заголовков есть стандартный набор заголовков который поддерживается большинством браузеров и большинством серверов но кроме того по разрешается вводить дополнительные http заголовки и за счет этого расширять протокол http теперь давайте детально рассмотрим как выглядит
10:14
http-запрос мы видим на данном слайде http-запрос версии 10 дело в том что между версии 10 и 11 есть некоторое отличие синтаксис запросы давайте сначала рассмотрим запрос версии 10 что можно о нём сказать во первых то плен текст то есть мы видим что запрос состоит из нескольких строк перевод строки то есть ну запросы из нескольких строк перепад переводом для перевода строки
10:47
используется символы bug smasher бак слеш н именно такая последовательность в принципе веб-сервера зачастую понимают и просто бог слеш н но это не соответствует стандарту поэтому рекомендуется использовать именно сочетание backsplash рбк запросе мы видим что первая строчка отличается от остальных это основная строка запроса
11:22
вот она в этой строке мы можем выделить первое слово это метод запроса метод запроса указывает на то какую операцию мы осуществляем в данный момент то есть гру говоря он говорит о том что веб-сервер должен для нас сделать далее идет строка в которой содержится урн документы
11:54
здесь все довольно понятно с помощью мы мы должны передать урну документа для того чтобы observer знал какой именно документ нам нужен стоит обратить внимание что документа версии 10 передается полной то есть начиная с http содержат имя хоста и полный путь к документу причем забота клиенты заключается в том чтобы подключиться к
12:24
правильному серверу как вы понимаете нельзя просто подключиться к произвольному серверу передать ему запрос содержащий произвольный домен домен которая передается в запросе должен соответствовать айпи адрес у того сервера которому вы подключаетесь и последнее слово в первой строчке это версия протокола ее необходимо указывать для того чтобы сервер мог понять какой набор опций поддерживает данный клиент после первой строчке
13:02
идут дополнительные строчки содержащие заголовки так называемые заголовки как мы видим заголовки состоит из двух частей заголовка есть у заголовка есть имя есть значение вот например имя заголовка вот значение заголовки не могут именно заголовков не могут содержать пробелы в принципе они
13:34
содержат в основном буквы и цифры и нога терры в каноническом видео считается что заголовки написано в так называемом kml кейсе то есть каждое новое слово с большой буквы однако это не обязательное условие и в некоторых случаях заголовки передаются в другом виде например ни в ком кейса только первая буква за главное как правило веб-сервера и веб-клиента
14:06
адаптируются к этому переводят заголовки в стандартный вид значение заголовков может быть очень различны в зависимости от самого заголовка полный синтаксис можно узнать соответствующим rfc сейчас это не очень важно главное чтобы заголовки не нарушали общую структуру то есть например не содержали переводу в строк после всех запросов идет пустая строка
14:38
то есть считается что заголовки закончились когда мы встретили пустую строку после пустой строки может идти тело запроса если она предусмотрена данным методом как выглядит http-запрос версии 1111 это более современная версия протокола http в принципе в общем и целом он выглядит так же для нас отличия заключается в следующем во-первых url у которой передается
15:09
запросе не абсолютный и относительный но вместо этого хост на которой идет запрос передан в виде отдельного заголовка виде заголовка хвост это сделано исключительно для облегчения работы веб-серверов которые обслуживают несколько доменов одновременно так называемые виртуальные хостинг кроме того запросе версии 11 присутствуют
15:43
дополнительные заголовки то есть заголовков просто больше частности появляется заголовок connection заголовок connection позволяет управлять соединение между двумя двумя точками с соединенными протоколов http 11 в частности в данном случае он говорит о том что соединение не должно быть закрыто отлично как выглядит http ответ асти
16:18
тебе ответ также является плен текстом то есть мы можем получить с помощью цены открыть текст вам редакторе начала очень похоже он состоит из строчек перевод строки так же бог саша рыбак слеш н первая строка это строка ответа в ней содержится версия протокола по которой отвечает сервер она не всегда может соответствовать версия клиента предполагается что клиент и сервер вы берут минимальную
16:57
поддерживаемую версию например если клиент поддерживается что тебе 11 а сервер только 10 клиент должен использовать версию 10 итак у нас есть версия и по которой работает сервер после чего идёт некоторое число это число код ответа код ответа говорит о том результате операции и после идет текстовая расшифровка текстовое шифровка
17:32
это фактически тот же самый код ответа только для человека в принципе все программное обеспечение она ориентируется именно на код на это число текст который находится справа большого значения не имеет ниже идут заголовки ответа синтаксис точно такой же как в запросе то есть ключ-значение через перевод строки после чего идет пустая строчка после чего
18:01
передается сам документ заметим задачу которые нам нужно было решить в первую очередь это каким-то образом указать content type документа и его длину content type то есть маем type name тип контента выбито одно и то же вот здесь указан mayn't документа это текст html и опционально указанная его кодировка то есть то кодировка в которой собственно этот документ создан
18:39
чтобы браузер мог отличить допустим utf-8 от sp 1251 кодировок передается в заголовке content type фактически content type это единственный заголовок который нужен браузеру обязательно нужен браузеру чтобы отобразить документ из остальных заголовку браузер может обойтись content type нужно обязательно после всех заголовков идет пустая строка и тело ответа
19:07
таким образом задается тело ответа длина длина ответа то есть мы мы должны знать когда прекратить какой длины у нас документ сколько данных нам нужно считывать эти соединения существуют разные подходы один из подходов заключается в том чтобы читать до тех пор пока соединения не будет закрыта мы видим что здесь указано connection клаус специальный заголовок который говорит о том что соединение нужно закрыть и не указана длина другой
19:41
вариант заключается в том чтобы передавать специальный заголовок как правило web сервер передает заголовок контент land в нем указана длина документа тогда соединение можно оставить открытым повторимся что http-запрос состоит из строки запроса заголовков и тело давайте подробнее рассмотрим какие методы могут быть вашти типе запросе самый распространенный
20:18
метод это метод get он нужен для получения документа мы говорили что основной сценарий работы в приложении это загрузка документов сервера на клиент метод get говорит веб-серверу верни мне документ пожалуйста по указанному урну это основной метод который используется далее есть метод head функционирует он точно также как метод get за одним исключением
20:49
сам документ не нужен метод лет говорит о том что верни мне полностью все то же самое что и при get но без тела документа то есть получение только заголовков и статуса статуса ответа зачем этот метод нужен этот метод нужен когда нам нужно проверить например наличие документа это часто используется поисковыми ботами которые проверяют актуальность информации которая находится у них они
21:21
выполняют get запрос и и получают только заголовки только метра информацию они экономит трафик если документ по если is het запросы мы видим что документ устарел то есть на сервере более новый документ может выполнить полноценный get запрос и получить весь документ далее по запросу post запрос это отправка данных на сервер причем это
21:54
отправка произвольных данных эти данные могут быть виде какого-то документа либо в специальном виде в котором они передаются при отправке формы то есть когда вы их браузер отправляется форма на сервер данные формы кодируется специальный специальную разновидность документа вот эти три запросы они основные для web-приложений
22:28
причем head используется даже редко out get и post постоянно помимо этого в протоколе теперь существует и другие меры например метод put me that put этот также отправка данных но это отправка документа целиком этот метод означает что нужно разместить передаваемый документ точно по указанному углу то есть это наоборот загрузка документа на сервер делить это
22:57
удаление документа эти методы они стандартные для протокол http но они как правило отключены на публичных в серверах по простой причине потому что разработчики в приложении не хотят чтобы кто угодно мог загружать какие-то произвольные документы которые лягут на веб-сервер приложение далее существуют методы connect trace опция они
23:29
используются крайне редко они используются для проектирования либо для получения информации о web сервере и существуют методы расширения протокола http и есть расширение называется новый обдав этот протокол предназначен для более скажем удобного богатого управления коллекции списком файлов на удаленном сервере он позволяет загружать удаленно копировать
24:03
и перемещать файлы создавать директории на веб-сервере эти методы тоже как правило отключена для широкого использования то есть на публичных серверах вы скорее всего их не найдете однако методы webdav и методы куда дэвид они и используются часто во внутренних интерфейсах для загрузки данных там с одной части в приложении на какую-то другую часть для передачи
24:34
передачи файлов внутри самого приложения внутренний интерфейс здесь они используются довольно часто теперь давайте посмотрим какие коды ответа присутствуют в протоколе штате питаюсь что может ответить веб-сервер когда к нему отправлен запрос во-первых следует сказать что кода ответа делятся на несколько групп мы знаем что код это число они делятся на несколько групп по первые цифры этого
25:04
числа те которые начинаются с единицы это информационные информационные коды они используются довольно редко они предназначены для координации действий клиента и веб-сервера например некоторых случаях клиент перед загрузкой большого файла ожидает получение информационного кода о том что сервера его действительно примет эти используется очень редко
25:34
кода ответы которые начинаются с двойки они говорят про более-менее успешное выполнение запроса те которые начинаются стройке это перенаправление перенаправление означают что документ может быть получен с другого угла то есть что данный запрос завершился неудачно но документ можно найти по другому углу либо что существуют другие версии документа
26:10
ошибки которые начинают skoda ответы которые начинаются с четверки это ошибки на стороне клиента то есть запрос осуществить не удалось и проблема где-то у клиента ошибки которые начинаются кодек тур начинается с пятерки это ошибки на стороне сервера давайте посмотрим подробнее наиболее распространенные куда ответа мы сейчас разберем которые используются наиболее часто при
26:42
веб-разработке и так код 200 ok первое на что нужно как бы чего нужно добиться в приложении это чтобы она дала хотя бы один документ с кодом 200 ok 200 ok означает что запрос успешно выполнен при этом в теле ответа будет документ который мы возвращаем то есть который возвращается в браузер в об клиенту помимо 200 существует код 204 он менее
27:18
распространен он говорит о том что запрос успешно выполнил но документы как такового нет то есть документ пуст но тем ни менее web-сервер считать что запрос выполнен вполне успешность например от пустой файл далее 301 302 и 304 301 этот так называемый перманентный redirect при этом коде
27:52
ответа сервер не возвращает документы вместо этого он возвращает новый url документа этот код ответа применяется при например перемещение к документа когда у вас был некоторый файл и вы его решили что он должен лежать в другом месте переместили она всегда в другое место по старому углу вам нужно настроить веб сервер так что надавал код ответа 301 тогда запросы которые приходят на старый url они будут перенаправлены на новый урон
28:25
то есть браузер проследует по новому углу за этим документом 302 это временные redirect в чем отличие между 301 302 301 redirect может запоминаться кашира ваться на стороне браузера то есть предполагается что документ назад больше никогда не вернется и поэтому следующий раз browse может сразу идти по новому пути по новому углу 302 означает что браузер должен выполнить запрос по новому углу
28:58
одно запоминать это не должен то есть он должен каждый раз когда получила 302 redirect выполнять запрос по новому углу причем это get запрос код ответа 302 часто используется при обработке форм для того чтобы избежать ошибок с повторной отправкой теперь код ответа 304 304 not modify документ не изменился использовать кэш этот код
29:32
ответа используется совместно со специальным заголовком так называемый conditional get веб-клиент частности браузер при загрузке документа может иметь у себя уже сохраненную копию этого документа ну например мы загружали веб страничку все картинки сохранились потом переходим на соседнюю веб-страницу а там те же самые картинки используются тот же самый логотип у нас этот логотип лежит на диске клиента поэтому при
30:05
запросе мы указываем а веб-клиент указывает специальный заголовок о том что этот файл есть и он от такого-то числа точно последнее изменение такого-то числа если веб-сервер считает что файл не изменился он может ответить 304 304 означает что файл остался неизменным и нужно использовать тот который есть кэше браузера далее вторая порция
30:35
годов ответа те которые начинаются с четверки 400 bad request это говорит о том что сервер не смог разобрать запрос клиента то есть это неправильный синтаксис запросам в таком виде это встречается очень редко потому что обычного клиента они все-таки правильно реализуют про так ложки теперь это бывает часто связана с слишком длинной строкой запроса то есть хотя протокол http не накладывает никаких ограничений
31:06
на длину строки веб-сервер все-таки выделяет какую-то область памяти буфер чтобы прочитать запрос и поэтому запрос может туда не поместится и web-сервер в таком случае ответить 400 код ответа 401 401 означает что требуется авторизация то есть для доступа к данному ресурсу пользователь должен ввести логин и пароль все просто когда браузер получат код ответа 401 он покажет специальный
31:41
диалог для ввода логина и пароля 403 forbidden означает что нет доступа к ресурсу обычно они работают в паре с 400 первым то есть 401 означает что для доступа к ресурсу нужно логин пароль а 403 означает что например логин пароль не подошел либо нет доступа по другой причине так или иначе это проблема клиента другому клиенту может повезти больше
32:13
404 очень популярная ошибка означает то что документ не найти браузер сделал запрос по кому-то урну а на сервере этого документа нет в таком случае сервера дает ошибку 404 в большинстве случаев это означает что программисты где-то ошиблись с написанием url а далее идут коды ответы начинающиеся с пятерки 500 internal server error
32:45
это очень популярная среди начинающих программистов ошибка оно означает внутренняя ошибка сервера веб-сервер как готовый продукт довольно редко содержат своем коде ошибки и редко возвращает 500 ошибку однако applications сервер который запускает вашего приложения которые генерировать динамические страничке очень часто может отдавать сотую ошибку applications сервер отдает 503 ошибку в
33:18
случае если скрипт серверный скрипт в приложении не сработал должным образом в случае если приложение написано на языке python произошел какой-то необработанные эксепшен исключение было выбрать выброшена исключение вы его не обработали это привело к тому что какие-то сервера вернет ошибку 500 502 ошибки 502 и 504 они связаны с проектированием собственно
33:51
граф про проксирование мы поговорим чуть позже суть заключается в том что иногда веб сервер передает либо как говорят прокси рует запрос который пришел к нему к другому веб-сервер и вот когда тот который стоит позади него то есть прокси ruim эй веб сервер не отвечает либо отвечает с превышением тайм-аута то есть мы не дождались ответа веб сервер возвращает коды ошибок 502 и 504 как правило это
34:23
кода означает что какая-то проблема с администрированием веб-серверов и нужно об этом сообщить администраторам сисадмину далее мы видели что протоколе что теперь запросе в ответе присутствует заголовки на самом деле заголовки играют важнейшую роль с помощью них устанавливаются все опции протокола давайте посмотрим какие заголовки используются чаще всего
34:53
и что они означают позже в курсе мы будем подробно останавливаться в нужных местах и я буду говорить про разные механизмы в протоколе и про те заголовки которые эти механизмы обслуживают сейчас просто перечислим данные заголовки если рассматривать заголовки то их можно условно разделить на три группы это с головки общее которые могут присутствовать как в запросе так и в ответе http заголовки только
35:28
запроса и заголовки только ответа какие бывают общей заголовки эти заголовки как правило необходимы для управления соединением либо для управления форматом содержимого то есть форматом того что передается в теле запроса поэтому они собственного могут присутствовать как запросе так в ответе потому что управление с соединением требует двухстороннего и принятие решения и собственно говоря формат содержимого телу запроса может быть как
36:03
то есть тело может быть как у запроса так и о степи ответа итак первый самый важный заголовок и the content type в content type и содержится моим тип документа который указывает веб-серверу что это за документ с какого вида эта картинка что это html либо xml и указывают также некоторые опции например для html вполне актуально указание кодировки так называемый
36:39
charset как мы видели заголовок контент лэнс указывает длину сообщения от термин сообщения требует некоторого уточнения мы говорили что в приложении но занимается передачи документов сервера на клиент но при этом с клиента на сервер иногда отправляется к бы не совсем документа данные например формы
37:09
поэтому чтобы вести какой-то общий термин тело тело запросы либо тело ответ иногда называют в сообщении место чп в контент land заголовки контент love содержится длина тела запроса либо длина тела ответа контент encoding заголовки контент encoding содержатся кодирование документа например указывается что документ сжат с помощью gzip
37:44
помимо контент encoding есть трансфер котик в принципе эти опции они очень похожи отличие чисто семантическая контент encoding говорит о том какое кодирование применено к исходному документу а transferring один говорит о том какое кодирование применено для передачи этого документа например трансфер трансфер encoding может содержать значение changed чанг это означает что документ передается по кусочкам это случается
38:19
когда web-сервер точно не знает длину всего документа ну например он прокси рует запрос и либо либо он знает длину но документ слишком большой чтобы загрузить его полностью веб-сервер его отдает по кусочкам в таком случае в теле ответа содержится длина очередного куска очередного чанг а потом сам кусочек вот это называется трансфер encoding то есть очевидно что так вот такой документ
38:51
передо передаваемые по кускам нужно определенным образом читать заголовок connection заголовок апгрейт эти заголовки отвечают за управление соединение между двумя непосредственно соединенными узлами то есть между клиентом и непосредственно соединенным с ним сервером почему мы говорим непосредственно соединенным в протокол http имеет место проксирование
39:20
когда веб-клиент делает запрос к серверу а веб-сервер прокси рует передает запрос к следующему веб-серверу в таком случае веб-клиент он получает документ как бы через посредника у нас есть 20 и соединения между клиентом и первым сервером между сервером между первым сервером и вторым сервером вот заголовки управления соединениям они относятся конкретно к одному соединению то есть например к первому и соединения либо ко второму заголовок
39:54
апгрейт означает что необходимо сменить тип соединения то есть сменить протокол по которому работает соединение в частности он используется при изменении при запуске протокола websocket of заголовок connection позволяет управлять соединение например если в заголовке connection указывается специальное значение клаус соединение должно быть закрыто в принципе про президент на и соединение
40:27
мы поговорим в конце конце данного урок а вообще в заголовке connection содержится как ни странно название тех заголовков которые должны быть отброшена при проксирование соединения например если у нас установлен заголовок апгрейт то есть мы обновляем конкретное соединение до другого протокола в connection часто записаны слова апгрейт это означает что конкретно соединение
40:59
нужно обновить заголовка upgrade отбросить итак какие заголовки могут присутствовать только в запросах ну например заголовок of the relation заголовок авторы женщин содержат в себе ключ имя пользователя и пароль либо другой какой-то носитель авторизации то есть какой-то токен например заголовка авторизация передается кредит шел и
41:30
пользователь заголовок cookies в заголовке cookies передается состоянии сессия на сервер про механизм cookies следует сказать отдельно мы знаем что арте теперь это протокол запрос ответ каждый следующий запрос может прийти к новому к новому серверу таким образом server не поддерживает постоянное соединение с пользователем и должен
42:03
каждый раз заново понимать какой пользователь к нему подсоединился конечно можно это сделать с помощью механизма авторизации то есть при каждом запросе передавать логин пароль по которому мы можем определить сервер либо можно передавать социальную информацию ключ сессии обычно использует второй вариант и передают заголовки cookies браузер имеет встроенный механизм
42:33
направления куками поэтому он автоматически для каждого запроса определяет те cookies которые должны быть отправлены далее реферер это очень простой заголовок содержит ул предыдущего документа грубо говоря контекст запроса например если вы загрузили основную страничку браузер загрузил основную страницу а после этого начинает загружать связанные ресурсы картинки to get запросе за каждой картинкой будет
43:05
передаваться на заголовок реферер соответствующий углу первоначального документа то есть при запросе картинки мы будем знать на какой страничке она потребовалось при переходе по гиперссылкам в заголовке реферат содержится ул предыдущего документа например это заголовок бывает очень полезно для анализа например вы можете проанализировать реферера с которыми пользователя приходят на ваш сайт и определить с
43:36
каких сайтов они приходят например с какого поисковика больше приходят пользователи заголовок user-agent заголовок user-agent содержит описание веб-клиента мы говорили что клиенты бывают разные от консольных утилит до полноценных браузеров иногда веб-сервер желает отдавать разный ответ для разных клиентов наиболее распространенными
44:09
сегодня информ вариант когда для полноценных браузеров и для мобильных браузеров удаются разные странички для мобильных браузеров то есть для всякого рода андроидов айфонов тому подобное отдается мобильная версия сайта меньшего размера с меньшим количеством картинок которая более легкое более быстро загружается заголовки user-agent содержится общем-то описание описания клиента
44:39
который загружает данную страничку в произвольной форме но список всевозможных игр агентов он есть в интернете и он не сложно определить далее заголовок и в мотив а it since мы уже говорили про него этот заголовок позволяет реализовать так называемый кондишен get a условное получение документа работает вместе с кодом ответа
45:12
304 not modify давайте еще раз проговорим как он работает допустим браузер загружает некоторые документы как правило это связано ресурс картинка либо файл css со стилями браузер имеет встроенный кэш то есть он может просто сохранить этот документ на диске клиента далее клиент переходит пользователь переходит на другую веб-страничку допустим соседних
45:43
на этой страничке загружается тот же самый css-файл ли бы та же самая картинка браузер понимает что эта картинка есть у него в локальном кэше то есть он помнит что по данному урну он буквально недавно загружал картинку поэтому запросе за этой картинкой но по логике работы он должен загрузить заново но в запросе он добавляет специальный заголовок и fma дефо it since i в этом
46:14
заголовки указывается время последнего изменения документа то есть то время когда он в предыдущий раз получил данный css-файл если сервер понимает что у клиента находится свежий файл вместо того чтобы отдать файл с кодом 200 он отдает его с кодом 304 то есть еще не возвращает файл отдает код 304 код 304 позволяет браузеру использовать тот документ который у него есть каши таким образом сокращая объем
46:49
передаваемого трафика далее серия заголовков а акцепт эти заголовки нужны для согласования формата документа так называемый негодник женщин их много в частности указывается accept encoding акцепт ленгвич акцептор сет и тому подобное браузер передает эти заголовки чтобы показать какие документы он готов принять
47:21
например готов ли он принимать сжатый с помощью gzip документы либо он не умеет этого делать такой заголовок может потребоваться когда вы отлаживается какой-то это веб-сервис с помощью telnet а если вы не хотите с помощью как бы своего собственного мозга декодировать гриб разархивировать документ вы можете указать что вы готовы принимать только плен текст не готовы принимать тогда
47:54
веб-сервер не будет вам передавать сжатые документы какие заголовки могут присутствовать в ответах веб-серверов очень важный заголовок локейшн этот заголовок работает вместе с кодом 301 302 мы говорили что 301 302 это перенаправление когда веб-сервер не желает отдавать документ а вместо этого говорит что документ нужно загрузить еще
48:27
раз с другого url а другой он как раз передается в заголовке локейшн то есть если браузер получает код ответа 302 и получает заголовок locations перри запросит документ снова url а далее заголовок сетку ки заголовок сетку key позволяет серверу установить сессию на
48:59
клиенте типичная схема работы с куками примерно такого клиент отправляет логин пароль то есть входит на сайт веб сервер один раз проверяет авторизацию и с помощью сетку ки устанавливает клиенту передает длинный-длинный длинную строчку которая является ключом сессии в браузер запоминает эту строчку себя и возвращает
49:30
ее на сервер при каждом последующем запросит в заголовке cookies то есть сетку ки это заголовок ответа когда сервер передает клиенту куку a cookie это запрос заголовок запроса когда клиент возвращает серверу куку собственно говоря по этой cookies ого сервер может понять какой именно пользователь к нему пришел далее заголовок last-modified этот заголовок
50:00
опять таки работает вместе с механизмом conditional get то есть с кодом ответа 304 когда документ когда браузер возвращает документ в первый раз он для каждого документа извиняюсь когда веб сервер возвращает документ в первый раз для каждого документа указывает last-modified фактически эта дата последнего изменения дух мент но она как правило хранится файловой системе именно вот эту дату
50:32
браузер потом вернёт в заголовке iv мотив а it since если даты совпадают с работает механизм кондишн лагерь ну и еще пару заголовков заголовка дейт и заголовок сервер заголовок сервер очень прост в нем содержится информация про тип веб-сервера но это аналог заголовка user-agent в юзер агенте содержится информация про браузер про версию клиента в заголовке сервер содержится информация про вообще
51:04
отличие от user-agent используется крайне редко заголовок дует в нем передается дата на сервере это заголовок очень важен по следующей причине поскольку мы говорим про распределенную систему веб сервер и клиент могут находиться во первых в разных часовых поясах а во вторых они могут просто не синхронизированы по времени них могут может происходить расхождение часов
51:34
где-то час и настроенными точно как обеспечить хороший механизм работы каши ронни для этого веб-сервер с каждым своим ответом возвращает дейт то есть свое текущее время таким образом клиент может все остальные даты которые возвращают соотносить с временем сервера и вычислять правильное время кашира не на этом обзор в протокол http можно
52:08
считать завершенным еще раз повторюсь что протокол составить из запроса и ответа после этого соединения следует закрыть и в запросе и в ответе передаются заголовки которые управляют различными опциями протоколы и соответственно тело запроса ответа на самом деле опции нюансов по такой архетипе намного больше мы будем прощаться не по мере надобности
52:41
сейчас я предлагаю начать с одной из таких опций которая появилась протоколе p11 эта опция управления соединения ассистент на и соединение и так когда мы обсуждали что происходит при выполнении http запроса мы говорили что в первую очередь происходит обращение к системе dns но она может быть в принципе хорошо за кашированная потом происходит установление и соединения происходит тройное
53:13
рукопожатие на это тратится время после чего возможно запускается шифрованное соединение tls на tls рукопожатие тоже тратятся некоторое время и после чего уже осуществляется http-запрос к чему все это приводит это приводит к тому что возрастает лейтон все запроса то есть каждый запрос каждом и запрос требуется какое-то дополнительное время на вот эту процедуру рукопожатие это
53:45
приводит к тому что в страничке просто загружаются медленно то есть основное что мой документ загружается как загружается а вот связанные с ним документа они загружаются через некоторый промежуток времени это очень портит ощущение от просмотра веб-страниц и какое есть решение решение очевидно нужно повторно не нужно закрывать и соединений то есть и соединения можно использовать и tls и днями которая работает поверх него для передачи
54:16
нескольких запросов и ответов подряд собственного ракетой было реализовано в протоколе ждите pit-11 по управлением соединения мы видели как выглядит картина для протокол http 10 tcp поверх него tls поверх него http в котором делается один запрос 1 ответ вожди типе 11 в пределах одного сеть и
54:47
соединения опционально целое соединение может быть осуществлено несколько запросов каким образом это реализовано во первых нужно подумать про совместимость протоколов протокол http 1110 предполагал закрытие соединение то есть если у нас есть сервер либо клиент который работает портить и 10 он закроет соединение в любом случае то есть
55:17
веб-клиент закроет в web client версии 10 закроет соединение как только он получил ответ от сервера сервер если он работает по протоколу http 10 закроется и день и как только он это ответ отправил это логика работала долгое время и ее нужно как-то сохранить какое решение было принято решение было принято следующая протокол эти 10
55:48
по-прежнему предполагает закрыть и соединение протокол http 11 предполагает по умолчанию открытые соединения то есть протокол http 11 предполагает что после ответа соединение останется открытым если не было передано специального заголовка специальный заголовок и the connection клаус и так можно перефразировать логику соединение будет закрыта в том случае
56:20
если либо клиент либо сервер работает по протоколу версия 1 0 а версия протокола у нас передается в первой строчке запрос и ответ то есть если сервер либо клиент видит что с ним работает оппонент версия протокола 10 значит соединение нужно закрывать ничего не поделаешь это дань традиции если сервер или клиент указал connection клаус ну например если клиент знает что ему нужен ровно один документ и ему больше не нужно это соединение может
56:52
облегчить работу серверу чтобы он сервер не держал открытом соединение его просто закрыл в случае если ни то ни другое не выполняется то есть и клиент и сервер использует почти типе 11 и заголовок connection клаус передан не был в таком случае соединение остается открытым и по этому соединению браузер сможет передать дополнительные http запросы например а запросы на получение дополнительных
57:23
ресурсов картинок стиле java скриптов за счет этого загрузка всех связанных ресурсов идет по тому же тисе пи соединения что я основная страничка это существенно ускоряет загрузку основной странице так или иначе соединение президент на и соединение которое предполагается в 11 они не живут долго то есть это нет долгоживущие соединение у них очень
57:54
короткий time all порядка около 10 секунд обычно этот механизм резидентных соединений он предназначен именно для того чтобы загрузить все ресурсы необходимые для одной веб-странички через одно соединение но этот механизм он не обеспечивает действительно persistent подсоединения он просто ускоряет загрузку 1 веб-страницам через время таймаута это соединение будет в любом случае
58:24
закрыта сейчас существуют дополнительные механизмы которые ускоряют еще более ускоряет протокол http в частности это расширение протокол спиде предложенной компании google и новая версия протокола в цепи которая основана на идее x50 http 20

DOWNLOAD SUBTITLES: