Utilia

Kodues dhe dekodues URL

Kodues dhe dekodues URL falas. Kodo parametrat e query ose URL të plota, dekodo sekuencat %XX dhe trajto + si hapësirë. Ekzekutohet në shfletuesin tënd.

Mënyra

Si ta përdorësh koduesin dhe dekoduesin e URL

  1. Zgjidh Kodo për ta kthyer tekstin në një formë të sigurt për URL, ose Dekodo për ta kthyer tekstin me percent-encoding në karaktere të lexueshme.
  2. Kur kodon, zgjidh një Mënyrë: Komponent për një vlerë të vetme (si parametër query ose segment rruge), ose URL e plotë për të koduar një adresë të plotë duke ruajtur strukturën e saj.
  3. Kur dekodon të dhëna që vijnë nga një formular HTML ose një query string, aktivizo Trajto + si hapësirë që shenjat + të bëhen hapësira.
  4. Ngjit tekstin dhe kopjo rezultatin. Nëse një sekuencë përqindjeje është e keqformuar, mjeti raporton gabim në vend që të hamendësojë.

Çfarë është kodimi URL?

URL mund të përmbajnë vetëm një bashkësi të kufizuar karakteresh ASCII. Disa karaktere, si /, ?, #, & dhe =, janë të rezervuara sepse ndajnë pjesët e një adrese: rrugën, query string dhe fragmentin. Të tjera, si hapësirat, thonjëzat, shkronjat me theks ose emoji, thjesht nuk lejohen. Kodimi URL, i quajtur edhe percent-encoding, i zgjidh të dyja problemet duke zëvendësuar çdo bajt problematik me një % të ndjekur nga dy shifra heksadecimale.

Teksti fillimisht kthehet në bajte UTF-8, dhe çdo bajt kodohet veçmas. Një hapësirë bëhet %20, një ampersand bëhet %26, ë (dy bajte në UTF-8) bëhet %C3%AB, dhe emoji 😀 (katër bajte) bëhet %F0%9F%98%80. Karakteret e pa-rezervuara, pra shkronjat, shifrat dhe - _ . ~, nuk kanë kurrë nevojë për kodim.

Mënyra Komponent kundrejt URL të plotë

Zgjedhja e mënyrës së duhur është vendimi më i rëndësishëm, dhe gabimi këtu është burim klasik defektesh.

Mënyra Komponent punon si encodeURIComponent i JavaScript. Kodon çdo karakter të rezervuar, ndaj rezultati mund të vendoset pa rrezik brenda një pjese të një URL. Përdore për vlera parametrash query, segmente rruge ose çdo gjë që ka shkruar një përdorues. Për shembull, termi i kërkimit rock & roll bëhet rock%20%26%20roll. Nëse nuk e kodoje &, serveri do ta lexonte roll si fillim të një parametri të ri.

Mënyra URL e plotë punon si encodeURI. Supozon se hyrja është tashmë një adresë e plotë dhe ruan karakteret që i japin strukturë, si : / ? # & dhe =, ndërsa kodon hapësirat dhe karakteret jo-ASCII. Përdore për të pastruar një adresë si https://example.com/café menu?q=tea në https://example.com/caf%C3%A9%20menu?q=tea. Mos e përdor për vlera të veçanta: një & brenda një vlere do të mbetej e pakoduar dhe do ta prishte query string.

Një rregull i mirë: ndërtoji URL nga pjesët, kodo çdo vlerë në mënyrën Komponent, dhe përdor mënyrën URL të plotë vetëm për adresa që i merr të gatshme të ndërtuara.

Shenja + dhe kodimi i formularëve

Formularët HTML të dërguar me application/x-www-form-urlencoded i kodojnë hapësirat si + në vend të %20. Prandaj URL e kërkimit shpesh duken si ?q=hello+world. Dekodimi standard me përqindje e lë + të pandryshuar, sepse në një rrugë një plus është thjesht plus. Kur dekodon një query string ose të dhëna formulari, aktivizo Trajto + si hapësirë për të marrë hello world. Lëre të çaktivizuar për rrugë dhe për vlera ku një + literal ka rëndësi, si numrat e telefonit ose të dhënat Base64. Një shenjë plus e vërtetë në të dhënat e formularit dërgohet si %2B, ndaj dekodohet saktë në të dyja mënyrat.

Privatësia

Kodimi dhe dekodimi ekzekutohen tërësisht në shfletuesin tënd. Asgjë që ngjit, përfshirë URL që mund të përmbajnë tokenë, ID sesionesh ose të dhëna personale, nuk dërgohet te një server dhe nuk ruhet.

Pyetje të shpeshta

Pse dekodimi dështon me gabimin “keqformuar”?

Një % duhet të ndiqet nga saktësisht dy shifra heksadecimale, dhe bajtet që rezultojnë duhet të formojnë UTF-8 të vlefshëm. Vargje si 100%, %G1 ose një sekuencë e cunguar si %E2%82 nuk mund të dekodohen në mënyrë të besueshme, ndaj mjeti raporton problemin në vend që të prodhojë tekst të gabuar. Për të përfshirë një shenjë përqindjeje literale, kodoje si %25.

Cili është ndryshimi mes %20 dhe +?

Të dyja mund të paraqesin një hapësirë, por në kontekste të ndryshme. %20 është i vlefshëm kudo në një URL. + do të thotë hapësirë vetëm në query string me kodim formulari; gjetkë është një shenjë plus literale.

A duhet ta kodoj një URL të tërë në mënyrën Komponent?

Vetëm nëse vetë URL është një vlerë brenda një URL tjetër, për shembull një parametër redirect=. Në atë rast, mënyra Komponent është saktësisht e duhura: https://a.com/?x=1 bëhet https%3A%2F%2Fa.com%2F%3Fx%3D1.

Pse teksti im është koduar dy herë?

Kodimi i dyfishtë ndodh kur teksti i koduar kodohet përsëri, duke e kthyer %20 në %2520. Dekodo një herë për të kontrolluar dhe sigurohu që çdo vlerë kodohet vetëm në çastin që futet në URL.

A i fsheh ose i mbron kodimi URL të dhënat?

Jo. Percent-encoding është plotësisht i kthyeshëm dhe nuk ofron asnjë siguri. Vlerat e ndjeshme në URL mund të përfundojnë në historikun e shfletuesit dhe në log-et e serverit, ndaj shmang fare vendosjen e sekreteve në URL.