Сервер томондан ҳолатни бошқаришга мисоллар
Мижоз-Server
Орқага
Мулоҳаза: биринчи қадамлар
Янада
Енди сиз server-ён дастурлаш мақсади ва потенциал фойда биламан, биз server браузерида бир "динамик сўров" олганда нима содир бир кўриб оламан. Сайтнинг server-ён коди енг шунга ўхшаш тарзда сўровларини ва жавоб ҳал бери, бу сиз ўз коди енг ёзганда нима тушунишга ёрдам беради.
Бошлашдан олдин:
|
асосий компютер саводхонлиги. Веб-server нима еканлигини асосий тушуниш.
|
Мақсад:
|
динамик веб-сайтда мижоз ва server ўртасидаги ўзаро алоқани ўрганинг ва айниқса, server томонидаги кодда қандай ҳаракатлар қилиш кераклигини билиб олинг.
|
Муҳокамада ҳақиқий код йўқ, чунки биз кодни ёзиш учун қайси веб-рамкадан фойдаланишга қарор қилмадик! Бироқ, бу мунозараси ҳали ҳам жуда долзарбдир, чунки таърифланган хатти-ҳаракатлар сиз танлаган дастурий тил ёки веб-доирадан қатъи назар server томонидаги кодингиз томонидан амалга оширилиши керак.
Веб-серверлар ва ҲТТП (бошланувчилар учун)
Веб-браузерлар веб-серверами при помощи гиперматн узатиш протоколи (ҲТТП) ёрдамида веб-серверлар билан мулоқотHTTPқилади. Агар саҳифада бир боғдан босинг қачон, бир шаклни тўлдиринг, ёки қўнғироқ амалга, браузер серверга ҲТТП сўров юборади-запрос.
Бу сўровга қуйидагилар киради:
МақсадлиURLserver ва ресурсни (масалан, ҲТМЛфайли, сервердаги аниқ маълумот нуқтаси ёки ишга туширилаётган воситани) белгилайдиган йўл (УРЛ).
Керакли ҳаракатни белгилайдиган усул (масалан, файлни олиш, ҳар қандай маълумотни сақлаш ёки янгилаш). Турли усуллари/буйруқлар ва тегишли ҳаракатлар қуйида келтирилган:
ГЕТ -гет маълум бир ресурс (масалан, HTMLмаҳсулот маълумотларини ёки маҳсулотлар рўйхатини ўз ичига олган ҲТМЛ файли).
ПОСТ -янги ресурс яратиш (масалан, викида янги мақола қўшиш, маълумотлар базасига янги kontakt қўшиш).
ҲЕАД -олиш сўров каби, мазмунини олмасдан маълум бир манба ҳақида ҳузур GETолиш. Мисол учун, сиз HEADресурс сўнгги янгиланган еди топиш учун бош сўров фойдаланишингиз мумкин , ва фақат ундан кейин фойдаланиш (яна "қиммат") GETу ўзгарди, агар ресурс ўзи юклаш учун сўров қилинг.
PUT Мавжуд ресурсни қўйинг-янгиланг (ёки мавжуд бўлмаса, янгисини яратинг).
DELETE-маълум бир ресурсни ўчириш.
TRACE, OPTIONS, CONNECT, ямоқ -бу буйруқлар камроқ машҳур / мураккаб вазифалар учун ишлатилади, шунинг учун биз уларни ҳали кўриб чиқмаймиз.
Қўшимча маълумотларни сўровда кодлаштириш мумкин (масалан, ҲТМЛforma маълумотлари). Ахборот сифатида кодланган мумкин:
УРЛпараметрлари: гет сўровлар URLсерверга юборилган УРЛ даги маълумотларни шифрлаб , унинг охирига исм/қиймат жуфтларини қўшиб, масалан, http://mysite.com?name=Fred&age=11://mysite.com?name=Fred&age=11. бу ҳолда, ҳар доим бир савол белгиси қўйиш (?) Урлнинг асосий қисмини URLУРЛ от параметрларидан ажратадиган, ҳар бир номни мос қийматидан ажратадиган тенг белги ( = ) ва жуфтларни ажратадиган ampersand ( & ). УРЛпараметрлари табиатан "хавфли", чунки улар фойдаланувчилар томонидан ўзгартирилиши ва кейин қайта топширилиши мумкин. Натижада УРЛпараметрлари /ГЕТ сўровлари сервердаги маълумотларни янгилайдиган сўровлар учун ишлатилмайди.
Почта маълумотлари. ПОСТ сўровлар кимнинг маълумотлар талаб танаси ўзи шифрланган янги ресурсларни киритиш .
Мижоз-ён cookies. Cookie файлларида мижоз ҳақида сессия маълумотлари, шу жумладан server авторизация ҳолатини ва ресурсларга рухсат/кириш ҳуқуқини аниқлаш учун фойдаланиши мумкин бўлган калитлар мавжуд.
Веб-серверлар мижозларидан талаб хабарлар учун кутиш, улар келганда уларни қайта ишлаш, ва ҲТТП жавоб хабари орқали веб-браузержавоб. Жавоб Код статуса HTTP-ответасўров муваффақиятли ёки йўқлигини билдиради ҲТТП жавоб, ҳолат коди ўз ичига олади (масалан,"200 ОК"муваффақият деган маънони англатади,"404 Not топилмади"ресурс топилмади бўлса,"403 ҳаром", фойдаланувчи ресурс кўриш учун рухсат бўлмаса, ва ҳоказо.). Талабига муваффақиятли жавоб танаси, талаб GET ресурс ўз ичига олади олиш.
После того как ҲТМЛсаҳифа қайтарилгандан сўнг браузер томонидан кўрсатилади. Ушбу жараён давомида браузер бошқа ресурсларга ҳаволалар (масалан, ҲТМЛ-саҳифа одатда JavaScript ва CСС файлларига боғланган) ва HTTPушбу файлларни юклаб олиш учун алоҳида ҲТТП сўровларини юбориши мумкин.
Ҳам статик, ҳам динамик веб-сайтлар (қуйидаги бўлимларда муҳокама қилинган) бир хил протокол/маълумотлар алмашиш нақшларидан фойдаланади.
Пример А гет сўров/жавоб мисол
Сиз GET уланишни босган ёки сайт қидириш ёрдамида оддий ГЕТ сўров яратишингиз мумкин (бундай қидируви саҳифа сифатида). Мисол учун, HTTP-запрос, отправленный во время выполнения запроса "client МДН сайтида "мижоз серверига умумий нуқтаи" сўровини бажариш пайтида юборилган ҲТТП сўрови" на сайте MDNқуйидаги матнга жуда ўхшаш бўлади (у бир хил бўлмайди, чунки хабарнинг қисмлари браузерингиз/созламаларига боғлиқ).
Формат ҲТТП хабар формати веб стандартида (РФC7230) белгиланган. Бу тафсилотни билишингиз шарт емас, лекин ҳеч бўлмаганда ҳозир қаердан келганини биласиз!
Талаб
Ҳар бир сўров сатрида сўров ҳақида маълумот мавжуд. Биринчи қисм сарлавҳа деб аталади заголовок ва сўров ҳақида муҳим маълумотларни ўз ичига олади, худди ҲТМЛ ҳеад ҲТМЛ ҳужжат ҳақида муҳим маълумотларни ўз ичига HTMLолади (лекин "бодй" теги ичида жойлашган ҳужжат мазмуни емас):
Қабул https://developer.mozilla.org/en-US/search?q=client+server+overview&topic=apps&topic=html&topic=css&topic=js&topic=api&topic=вебдев ҲТТП/1.1
Хост: developer.mozilla.org
Уланиш: сақланг-тирик
Pragma: но-Кеш
Кеш-назорат: но-Кеш
Upgrade-Ишончсиз-Сўровлар: 1
Фойдаланувчи-Agent: Mozilla / 5.0 (деразалар НТ 10.0; ВОЙ64) Апплебкит/537.36 (KHTML, Gecko каби) Chrome / 52.0.2743.116 Safari/537.36
Қабул: матн/ҳтмл,дастур/xhtml+хмл,дастур/хмл;қ=0.9,image/уебп,*/*; қ=0.8
Referer: https://developer.mozilla.org/en-US/
Қабул қилиш-кодлаш: гзип, deflate, сдч, бр
Қабул-Тили: ен-УС,ен;қ=0.8,ес;қ=0.6
Cookie: sessionid=6йнхс23н521лу21б1т136рҳбв7езнгие; cсрфтокен=зипужсазв6пcгcбжсcж1зу6пқзбфмуат; митти_сеcтион_едит=ёлғон; митти_сг_таск_cомплетион=ёлғон; _гат=1; _га=ГА1.2.1688886003.1471911953; ффо = рост
Биринчи ва иккинчи сатрларда юқорида муҳокама қилинган маълумотларнинг аксарияти мавжуд:
Сўров тури (олиш).
Мақсадли ресурс УРЛ (/ен-УС/search).
УРЛ-параметры (қ=мижоз%2бсервер%2бовервиеw&мавзу=иловалар&мавзу=ҳтмл&мавзу=cсс&мавзу=ойна&мавзу=апи&мавзу=wебдев).
Мақсад / мезбон сайти (developer.mozilla.org).
Биринчи сатрнинг охирида протокол версиясини (ҲТТП/ 1.1) аниқлайдиган қисқа сатр ҳам мавжуд.
Охирги сатр мижоз Cookie ҳақида маълумотларни ўз ичига олади — бу ҳолда, сиз idsession management идентификаторлари ўз ичига Cookie кўришингиз мумкин (Cookie: sessionid=6йнхс23n521лу21b1t136рҳбв7езнгие; ...).
Қолган сатрларда ишлатилган браузер ва у қайта ишлайдиган жавоб турлари ҳақида маълумот мавжуд. Мисол учун, бу ерда сиз кўришингиз мумкин:
Менинг браузерим (Усер-Agent) - Mozilla Firefox (Mozilla / 5.0).
Бу гзип қадоқланган маълумотларни қабул қилиши мумкин gzip(қабул-кодлаш: гзип).
Белгиланган кодлашларни (қабул қилишAccept-Charset: ИСО-8859-1,УТФ-8;q=0.7,*;q=0.7) ва тилларни (қабулқилиш-Language: де,ен;q=0.7,ен-ус;q=0.3) қабул қилиши мумкин.
Строка Referer string бу ресурс учун линк ўз ичига олган веб-саҳифанинг УРЛ белгилайди (яъни , original сўров манбаи, https://developer.mozilla.org/en-US://developer.mozilla.org/en-US/).
ҲТТПсўровида танани ҳам ўз ичига олиши мумкинbody, аммо бу ерда бундай емас.
Жавоб
Сўров жавобининг биринчи қисми қуйида келтирилган. Сарлавҳа қуйидаги маълумотларни ўз ичига олади:
Биринчи сатрда 200 ОК жавоб коди мавжудбўлиб, сўров муваффақиятли бажарилганлигини кўрсатади.
Биз жавоб матн бор, деб кўриш мумкин text/ҳтмл формати (контент-тури).
Шунингдек, жавобда УТФ-8 кодировкасини қўллашини кўрамиз (контент-тип: матн/ҳтмл; charset=утф-8).
Сарлавҳа шунингдек жавоб узунлигини ҳам ўз ичига олади (контент-узунлиги: 41823).
Хабарнинг охирида биз body, қайтарилган жавобнинг ҲТМЛ кодини ўз ичига олган тана таркибини кўрамизHTML.
ҲТТП / 1.1 200 ОК
Server: Apache
Х-Backend-Server: developer1.webapp.scl3.mozilla.com
Варй: Қабул, Cookie, Қабул-Кодлаш
Контент-тури: матн / ҳтмл; charset=утф-8
Сана: Чор, 07 Сен 2016 00:11:31 ГМТ
Сақла-Alive: timeout=5, мах=999
Уланиш: Сақланг-Тирик
Х-рамка-имкониятлари: инкор
Рухсат бериш: олиш
Х-Кеш-маълумот: кешлаш
Таркиб Узунлиги: 41823
<ҳтмл ланг= "ен-УС" дир="лтр" синф="но-жс қайталойиҳалаш " маълумотлар-ффо-опенсанслигҳт=ёлғон маълумотлар-ффо-опенсанс=ёлғон >>
<бош префикс= "ог: http://ogp.me/ns#">>
<мета charset="утф-8">>
<мета ҳттп-equiv="Х-уа-мос" таркиб="ИЕ = Едге">>
<скрипт>(>вазифаси(d) { d.синф номи = д.синфнома.replace(/\бно-жс/, "); })(ҳужжат.доcументелемент);< /script>>
...
Copy to Хотирага нусха олиш
Қолган жавоб header ўз ичига олади ҳақида маълумот жавоб (масалан, бўлса еди, ҳосил), server, ва қандай кутади браузер бўлади жараёни саҳифа (масалан, мағлубиятга X-Рамка-Вариантлари: БОШ айтади браузер олдини олиш учун жорий бу саҳифа, агар бу амалга <iframe> (ен-УС) бошқа веб-сайти).
ПримерБир ПОСТ сўров/жавоб мисол
Агар POST серверда сақланиши керак маълумотларни ўз ичига олган шакл тақдим қачон ҲТТП ПОСТ яратилган.
Талаб
Матн қуйида HTTP-запрос, сделанный бир фойдаланувчи ушбу сайтда янги профили маълумотларни юклайди қачон қилган ҲТТП сўров кўрсатади. Сўров формати аввал кўрсатилган ГЕТ request мисоли билан деярли бир хил, гарчи биринчи сатр ушбу сўровни ПОСТ сифатида белгилайди POST.
Хабар https://developer.mozilla.org/en-US/profiles/hamishwillee/edit ҲТТП/1.1
Хост: developer.mozilla.org
Уланиш: сақланг-тирик
Таркиб Узунлиги: 432
Pragma: но-Кеш
Кеш-назорат: но-Кеш
Келиб чиқиши: https://developer.mozilla.org
Upgrade-Ишончсиз-Сўровлар: 1
Фойдаланувчи-Agent: Mozilla / 5.0 (деразалар НТ 10.0; ВОЙ64) Апплебкит/537.36 (KHTML, Gecko каби) Chrome / 52.0.2743.116 Safari/537.36
Контент тури: дастур / х-шакл-урленcодед
Қабул: матн/ҳтмл,дастур/xhtml+хмл,дастур/хмл;қ=0.9,image/уебп,*/*; қ=0.8
Referer: https://developer.mozilla.org/en-US/profiles/hamishwillee/edit
Қабул қилиш-кодлаш: гзип, deflate, бр
Қабул-Тили: ен-УС,ен;қ=0.8,ес;қ=0.6
Cookie: sessionid=6йнхс23н521лу21б1т136рҳбв7езнгие; _гат=1; cсрфтокен=зипужсазв6пcгcбжсcж1зу6пқзбфмуат; митти_сеcтион_едит=ёлғон; митти_сг_таск_cомплетион=ёлғон; _га=ГА1.2.1688886003.1471911953; ффо = рост
csrfmiddlewaretoken=zIPUJsAZv6pcgCBJSCj1zU6pQZbfMUAT&user-username=hamishwillee&user-fullname=Hamish+Willee&user-title=&user-organization=&user-location=Australia&user-locale=en-US&user-timezone=Australia%2FMelbourne&user-irc_nickname=&user-interests=&user-expertise=&user-twitter_url=&user-stackoverflow_url=&user-linkedin_url=&user-mozillians_url=&user-facebook_url=
Copy to Хотирага нусха олиш
Асосий фарқ шундакиURL, УРЛ параметрларга ега емас. Кўриб турганингиздек, шаклдан маълумот сўров танасида кодланади (масалан, янги тўлиқ малакали фойдаланувчи номи ёрдамида ўрнатилади: &усер-fullname=hamish+Виллее).
Жавоб
Сўровдан жавоб қуйида кўрсатилган. "302 топилди"ҳолат коди браузерга хабарнинг қайта ишланганлигини ва HTTPжойлашув майдонида кўрсатилган саҳифани юклаш учун иккинчи ҲТТП сўрови кераклигини Locationайтади. Акс ҳолда, ахборот бир ГЕТ талабига жавоб учун ахборот ўхшайди GET .
ҲТТП / 1.1 302 ТОПИЛДИ
Server: Apache
Х-Backend-Server: developer3.webapp.scl3.mozilla.com
Варй: Cookie
Варй: Қабул Қилиш-Кодлаш
Контент-тури: матн / ҳтмл; charset=утф-8
Сана: Чор, 07 Сен 2016 00:38:13 ГМТ
Манзили: https://developer.mozilla.org/en-US/profiles/hamishwillee
Тутиш-тирик: timeout=5, мах=1000
Уланиш: Сақланг-Тирик
Х-рамка-имкониятлари: инкор
Х-Кеш-маълумот: cачеабле емас; сўров бир ГЕТ ёки бош емас еди
Таркиб-Узунлиги: 0
Copy to Хотирага нусха олиш
Еслатма: HTTPбу мисолларда кўрсатилган ҲТТП жавоб ва сўровлар Fiddler илова ёрдамида қўлгаолинди, лекин сиз веб-снифферс ёрдамида ўхшаш маълумотларни олишингиз мумкин (масалан, http://web-sniffer.net://web-sniffer.net/) ёки бундай Ҳттпфох сифатида браузер кенгайтмалари, фойдаланиш. Сиз уни ўзингиз синаб кўришингиз мумкин. Таклиф воситалари ҳар қандай фойдаланинг, ва кейин сайтга ўтинг ва турли талабларини ва жавобларини кўриш учун профили маълумотларни tahrir. Аксарият замонавий браузерларда тармоқ сўровларини кузатувчи воситалар ҳам мавжуд (масалан, Фирефохъда тармоқ Monitor воситаси в Firefox).
Статик сайтлар
Do'stlaringiz bilan baham: |