Tlhaselo ho litsamaiso tse ka pele-morao tse re lumellang ho kenella likopong tsa motho oa boraro

Senotswe lintlha tsa tlhaselo e ncha ea libaka tse sebelisang mohlala oa pele-pele-back-end, tse kang tse tsamaeang ka marang-rang a ho fana ka litaba, li-balancers tsa mojaro kapa li-proxies. Tlhaselo e lumella, ka ho romela likopo tse itseng, ho kenella ka har'a likahare tsa likopo tse ling tse sebetsitsoeng ka khoele e le 'ngoe lipakeng tsa frontend le backend. Mokhoa o reriloeng o ile oa sebelisoa ka katleho ho hlophisa tlhaselo e entseng hore ho khonehe ho thibela mekhahlelo ea netefatso ea basebelisi ba ts'ebeletso ea PayPal, e ileng ea lefa bafuputsi ka lidolara tse likete tse 40 e le karolo ea lenaneo la ho tsebisa ka boteng ba bofokoli bo sa ngolisoang. Tlhaselo e boetse e sebetsa libakeng tse sebelisang marang-rang a Akamai content delivery.

Bothata ba bothata ke hore li-frontends le li-backends hangata li fana ka maemo a fapaneng a tšehetso bakeng sa protocol ea HTTP, empa ka nako e ts'oanang e kenyelletsa likōpo tse tsoang ho basebelisi ba fapaneng ho kena mocha o tloaelehileng. Ho hokahanya likōpo tse amohelang li-frontend le likōpo tsa ts'ebetso ea morao-rao, ho thehoa ts'ebetso ea nako e telele ea TCP, eo ka eona likopo tsa basebelisi li fetisetsoang, li fetisetsoang ka ketane ka mor'a e 'ngoe, li arotsoe ka protocol ea HTTP. Ho arola likopo, lihlooho "Content-Length" (e khetha boholo ba lintlha tse kopong) le "Transfer-Encoding: chunked"(e u lumella ho fetisetsa lintlha ka likarolo, ho hlalosa li-blocks tsa boholo bo fapaneng ka mokhoa "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Bothata bo hlaha haeba sebaka se ka pele se tšehetsa feela "Bolelele-Bolelele" empa bo hlokomoloha "Transfer-Encoding: chunked" (mohlala, Akamai CDN e entse sena) kapa ka tsela e fapaneng. Haeba Transfer-Encoding: chunked e tšehetsoa ka mahlakoreng ka bobeli, likarolo tsa ts'ebetsong tsa li-header tsa HTTP li ka sebelisoa bakeng sa tlhaselo (mohlala, ha pheletso e ka pele e iphapanyetsa mela e kang "Transfer-Encoding: xchunked", "Transfer-Encoding: chunked ”, “Transfer-Encoding” :[tab] chunked", "X: X[\n]Transfer-Encoding: chunked", "Transfer-Encoding[\n]: chunked" kapa "Transfer-Encoding : chunked", le the backend ka katleho li sebetsa).

Tabeng ena, mohlaseli a ka romela kopo e nang le lihlooho tse peli tsa "Content-Length" le "Transfer-Encoding: chunked", empa boholo ba "Content-Length" ha bo tsamaisane le boholo ba ketane e khaotsoeng. e nyane hofeta boleng ba nnete. Haeba frontend e sebetsa le ho fetisa kopo ho latela "Content-Length" mme mokokotlo o emetse hore block e phethe ho latela "Transfer-Encoding: chunked", joale pheletso ea data e thehiloeng ho "Transfer-Encoding: chunked" e tla. ho khethoa pejana mme mohatla o setseng oa kopo ea mohlaseli o tla ba qalong ea kopo e latelang, i.e. mohlaseli o tla khona ho hokela data e sa utloahaleng qalong ea kopo ea motho e mong e fetisitsoeng kamora moo.

Tlhaselo ho litsamaiso tse ka pele-morao tse re lumellang ho kenella likopong tsa motho oa boraro

Ho tseba bothata ka har'a motsoako oa frontend-backend o sebelisitsoeng, o ka romella kopo e kang ena ka pele:

POST /mabapi le HTTP/1.1
Moamoheli: example.com
Transfer-Encoding: chunked
Bolelele ba Litaba: 4

1
Z
Q

Bothata bo teng haeba backend e sa sebetsane le kopo hang hang mme e emetse ho fihla ha "zero" ea ho qetela ea data ea chunked. Bakeng sa tlhahlobo e felletseng lokisitsoe sesebelisoa se ikhethileng se lekang mekhoa e ka khonehang ea ho pata hlooho ea "Transfer-Encoding: chunked" ho tloha ka pele.

Ho etsa tlhaselo ea 'nete ho ipapisitse le bokhoni ba sebaka se hlaselitsoeng, mohlala, ha u hlasela ts'ebeliso ea webo ea Trello, u ka nka sebaka sa qalo ea kopo (lintlha tse kang "PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake”) ebe u romela molaetsa ho kenyeletsoa kopo ea mantlha ea mosebelisi oa motho oa boraro le Cookie ea netefatso e boletsoeng ho eona. Bakeng sa tlhaselo ea saas-app.com, ho ile ha khoneha ho kenya khoutu ea JavaScript karabong ka ho e kenya sebakeng se seng sa likopo. Bakeng sa tlhaselo ea redhat.com, motho ea sebetsang ka hare o ile a sebelisoa ho lebisa sebakeng sa marang-rang sa mohlaseli (kopo ea foromo "POST /search?dest=../assets/idx?redir=//[imeile e sirelelitsoe]/ HTTP/1.1").

Ho sebelisa mokhoa oa marang-rang a phano ea litaba ho entse hore ho khonehe ho khutlisa sebaka sa marang-rang se kopiloeng ka ho beha hlooho ea "Host:". Tlhaselo e ka boela ea sebelisoa ho chefo ka har'a lits'ebetso tsa caching tsa litaba le ho ntša data ea lekunutu e bolokiloeng. Ntho e ka sehloohong ea mokhoa ona e ne e le mokhatlo oa tlhaselo ea PayPal, e ileng ea etsa hore ho khonehe ho thibela li-passwords tse rometsoeng ke basebelisi nakong ea netefatso (kopo ea iframe e fetotsoe ho phethahatsa JavaScript ho latela moelelo oa leqephe la paypal.com/us/gifts, bakeng sa eo CSP (Content Security Policy) e sa kang ea sebelisoa).

Ho thahasellisang ke hore ka 2005 ho ne ho e-na le sisintsweng mokhoa o ts'oanang oa ho senya o u lumellang ho senya datha ho li-proxies tsa caching (Tomcat, squid, mod_proxy) kapa ho feta thibelo ea firewall ka ho hlakisa likopo tse 'maloa tsa "GET" kapa "POST" nakong ea seboka se le seng sa HTTP.

Source: opennet.ru

Eketsa ka tlhaloso