← Gbogbo irinṣẹ

Ìkọ́wéwé àti Ìtúmọ̀ URL Lórí Ayélujára

Kọ́wé àti túmọ̀ URL àti ọ̀rọ̀ nípa ìdá-ọgọ́rùn-ún nínú aṣàwárí rẹ. Yé àwọn àmì tí a fi pamọ́, encodeURI àti encodeURIComponent, tí a ń ṣe ní àdúgbò.

Ìṣàkóso àti Ìyíparadà URL, tí a Ṣàlàyé fún Àwọn Olùṣàkóso-kọ̀ǹpútà

Tẹ àyè òfìfo sínú URL kan, tàbí ọ̀rọ̀ Cyrillic, tàbí àmì ampersand tí ó jẹ́ ti dátà rẹ dípò tí adírẹ́sì náà fúnra rẹ̀, ohun kan ní láti fàyè gba. Ayélujára ń dá ìdánilójú ìjísùn àìléwu fún àwọn àmì ASCII díẹ̀ tí a lè sọ tẹ́lẹ̀ nìkan. Gbogbo ohun mìíràn ní láti wà ní ìfísímú nínú ìrísí tí àwọn router, sáfà àti aṣàwárí gbogbo gbà. Ìrísí náà ni ìṣàkóso ìdá-ọgọ́rùn-ún (percent-encoding), tí a mọ̀ sí ìṣàkóso URL, ojú-ìwé yìí sì jẹ́ kí o yí ọ̀rọ̀ padà ní ọ̀nà méjèèjì tààrà nínú aṣàwárí rẹ.

Ọ̀nà URL tí ó ń dán tí ó ń tú sínú àwọn àmì hexadecimal tí a fi ìdá-ọgọ́rùn-ún ṣàkóso lórí abẹ́lẹ̀ aláwọ̀ búlúù dúdú
Ọ̀nà URL kan tí ń yípadà sí àwọn ẹ̀ka-mẹ́ta tí a fi ìdá-ọgọ́rùn-ún ṣàkóso tí ó léwu.

Ohun tí ìṣàkóso ìdá-ọgọ́rùn-ún jẹ́ ní ti gidi

Òfin náà jẹ́ ti ẹ̀rọ, ó sì rọrùn láti tẹ̀lé. Àmì kankan tí kò lè farahàn gan-an ni a fi àmì % pààrọ̀ rẹ̀ pẹ̀lú nọ́mbà hexadecimal méjì tí ó tú iye baiti àmì náà jáde. Àyè òfìfo a di %20. Àmì àfikún a di %2B. Àmì nọ́mbà a di %23. Nígbà tí àmì kan bá ní baiti púpọ̀, gẹ́gẹ́ bí ọ̀pọ̀lọpọ̀ ọ̀rọ̀ tí kì í ṣe ASCII ti ń ṣe lábẹ́ UTF-8, o kàn máa rí ẹ̀ka-mẹ́ta púpọ̀ ní ọ̀nà kan: àmì owó euro a di %E2%82%AC. Ìyíparadà ń ṣe ní òdìkejì ìlànà náà, ó ń ka ẹ̀ka-mẹ́ta kọ̀ọ̀kan padà sí baiti ìpilẹ̀ṣẹ̀ rẹ̀.

A ti ṣe àpèjúwe ìlànà yìí nínú ìlànà URI (RFC 3986), a sì ṣe é ní ọ̀nà tí kò ní ẹwì mọ̀ọ́mọ̀. Aláìní-ẹwì náà ni kókó ọ̀rọ̀ náà. Gbogbo alábàárà àti sáfà HTTP tí ó dára jùlọ lórí ilẹ̀ ayé ń ṣe àwọn òfin kan náà, nítorí náà ìjápọ̀ kan tí a ti ṣàkóso rẹ̀ dáadáa níbì kan a máa dé ní pípé níbikíbi mìíràn.

Kí ló dé tí ó fi ní láti wà

URLs ń gbé irú àmì méjì tí ó ní iṣẹ́ tí ó yàtọ̀síra gidigidi. Àwọn àmì tí a fi pamọ́ (reserved characters) bíi /, ?, #, &, = àti : jẹ́ ti ètò. Wọ́n ń sọ fún olùkàwé-kóòdù níbi tí ọ̀nà náà ti parí àti níbi tí ọ̀rọ̀ ìbéèrè ti bẹ̀rẹ̀, tàbí níbi tí páramítà kan ti dúró tí èkejì sì ti bẹ̀rẹ̀. Bí dátà rẹ gan-an bá ní ọ̀kan lára àwọn àmì wọ̀nyí, ó ní láti ṣàkóso rẹ̀ kí olùkàwé-kóòdù náà má bàa ṣàṣìṣe rò pé àmì-ìtọ́ka ni. Àmì-ìtọ́ka ọ̀rọ̀ bí A&B/2024 tí a fi sí inú ọ̀rọ̀ ìbéèrè láìṣàkóso rẹ̀ a máa yeè kà gẹ́gẹ́ bí páramítà méjì àti ẹ̀ka ọ̀nà kan.

Lẹ́yìn náà, àwọn àmì tí kò léwu àti tí kì í ṣe ASCII wà: àyè òfìfo, àmì-ìsọ̀rọ̀, àmì akolé igun, lẹ́tà tí ó ní àmì, emoji, ohunkóhun tí ó wà lóde ààlà ASCII lásán. Kò yẹ kí àwọn wọ̀nyí farahàn gan-an nínú URL rárá, yálà nítorí pé wọ́n máa díbàjẹ́ ní ìrìnàjò tàbí nítorí pé kò sí ìrísí tí a ti pinnu fún wọn. Ṣíṣàkóso wọn ń jẹ́ kí àwọn ìjápọ̀ mọ́ tí ó sì lè sọtẹ́lẹ̀ dípò kíkó àbájáde náà sílẹ̀ fún àǹfààní.

Ibi tí ó ti ń farahàn nínú iṣẹ́ gidi

Àwọn ọ̀rọ̀ ìbéèrè ni àpẹẹrẹ tí ó gbajúmọ̀ jùlọ. Gbogbo iye tí o bá fi kún ?key=... yẹ kí a ṣàkóso rẹ̀ kí ohun tí olùmúlò kọ má bàa fọ́ ètò náà. Bákan náà ni ó rí fún àwọn ìfilélẹ̀ fọ́ọ̀mù HTML tí a fi ránṣẹ́ gẹ́gẹ́ bí application/x-www-form-urlencoded, níbi tí aṣàwárí náà ti ń ṣàkóso àwọn iye pápá lẹ́sẹ̀kẹsẹ̀ láìfẹ̀hónúhàn (àti, gẹ́gẹ́ bí àṣà àtijọ́, ó ń sọ àyè òfìfo di + dípò %20). Wàá tún bá a pàdé nígbà tí o bá ń kọ́ ìjápọ̀ tí ó tọ́ka sí àwọn ojú-ìwé tí ó ní àkọlé tí kì í ṣe èdè Látìn, nígbà tí o bá ń kọ́ ìbéèrè API pẹ̀lú ọwọ́ rẹ, nígbà tí o bá ń fi ibi tí a máa tún darí padà sí gẹ́gẹ́ bí páramítà, àti nígbà tí o bá ń wá àṣìṣe idi tí ìbéèrè kan tí ó dà bí ẹni tí ó dára nínú àyè adírẹ́sì fi ń dé tí ó ti bàjẹ́ ní ẹ̀gbẹ́ sáfà.

Odò dátà tí ń rìn láìléwu nípasẹ̀ ọ̀nà tí ń dán aláwọ̀ cyan àti wúrà tí ó ń fi ìṣàkóso URL hàn
Ìṣàkóso ń jẹ́ kí ọ̀rọ̀ kankan lè rìn láìléwu nípasẹ̀ ètò ayélujára.

encodeURI lòdì sí encodeURIComponent

JavaScript ní olùṣàkóso méjì, yíyan èyí tí kò tọ́ sì jẹ́ àṣìṣe tí ó wọ́pọ̀. Ìyàtọ̀ náà wà lórí ààlà. encodeURIComponent jẹ́ fún ẹ̀ka dátà kan ṣoṣo, bíi iye ọ̀rọ̀ ìbéèrè kan. Ó ń ṣàkóso ó fẹ́rẹ̀ẹ́ jẹ́ gbogbo ohun, títí kan àwọn àmì tí a fi pamọ́ /, ?, :, @, &, =, + àti #. Ìyẹn gan-an ni ohun tí o fẹ́ nígbà tí dátà náà bá ní ààyè láti ní àwọn àmì wọ̀nyí gẹ́gẹ́ bí ọ̀rọ̀ lásán.

encodeURI jẹ́ fún gbogbo adírẹ́sì kan tí o fẹ́ jẹ́ kí ó máa ṣiṣẹ́. Ó ń fi àwọn àmì ètò sílẹ̀ láìfọwọ́kàn, nítorí náà àwọn slash, kólọ̀nì àti àmì ìbéèrè tí ó ń dì URL náà pọ̀ a máa yè kọjá. Lò ó nígbà tí o bá ní URL kíkún tí o sì fẹ́ mọ́ àyè òfìfo tàbí àwọn àmì tí kì í ṣe ASCII kúrò nìkan; lo encodeURIComponent nígbàkúgbà tí o bá ń fi iye kan sínú URL tí ó tóbi. Òfin tí ó rọrùn láti rántí: fi encodeURI ṣàkóso gbogbo ìjápọ̀, fi encodeURIComponent ṣàkóso àwọn ẹ̀ka tí o fi sí i.

Ohun gbogbo ń dúró sórí ẹ̀rọ rẹ

Irinṣẹ́ yìí ń ṣiṣẹ́ patapata nínú aṣàwárí rẹ. Ọ̀rọ̀ tí o bá fọ́ọ̀nu sí i ni a ń ṣàkóso tàbí kí a yí padà ládùúgbò pẹ̀lú ìlànà tí ó ti fi ìdí rẹ̀ múlẹ̀ kan náà, kò sì lọ sí sáfà kankan rárá, èyí tí ó mú kí ó jẹ́ àìléwu fún àmì-ìdánimọ̀, páramítà tí a ti fọwọ́sí, tàbí ohunkóhun mìíràn tí o kò fẹ́ fi ránṣẹ́ kọjá okun wáyà. Bí o bá ń ṣiṣẹ́ pẹ̀lú àwọn ìyípadà ọ̀rọ̀ mìíràn, olùyíparadà Base64 wà ní ẹ̀gbẹ́ rẹ̀ gan-an, o sì lè wo gbogbo àwọn irinṣẹ́ olùṣàkóso-kọ̀ǹpútà fún àwọn olùrànlọ́wọ́ ojoojúmọ́ síi.

Àwọn ìbéèrè tí a sábà máa ń béèrè

Kín ni %20 túmọ̀ sí nínú URL?

Àyè òfìfo tí a ti ṣàkóso ni. Kò gba àyè òfìfo láàyè láti farahàn gan-an nínú URL, nítorí náà a fi àmì ìdá-ọgọ́rùn-ún àti iye hexadecimal 20 pààrọ̀ rẹ̀, èyí tí ó jẹ́ iye baiti àyè òfìfo.

Kí ló dé tí mo fi máa ń rí àmì àfikún dípò %20 nígbà mìíràn?

Dátà fọ́ọ̀mù HTML irú application/x-www-form-urlencoded ń ṣàkóso àyè òfìfo gẹ́gẹ́ bí àmì àfikún nípa àṣà àtijọ́. Nínú ọ̀nà tàbí ọ̀rọ̀ ìbéèrè lásán, a ń ṣàkóso àyè òfìfo gẹ́gẹ́ bí %20. Àwọn méjèèjì máa ń yípadà sí àyè òfìfo nínú ipò tí ó tọ́ wọn.

Nígbà wo ni mo yẹ kí n lo encodeURIComponent dípò encodeURI?

Lo encodeURIComponent fún iye kan ṣoṣo tí o ń fi sí inú URL kan, bíi páramítà ọ̀rọ̀ ìbéèrè, nítorí pé ó ń ṣàkóso àwọn àmì tí a fi pamọ́ pẹ̀lú. Lo encodeURI fún adírẹ́sì kíkún nígbà tí o bá fẹ́ mú àwọn slash, kólọ̀nì àti àmì ìbéèrè tí ó ń dì í pọ̀ dúró.

Ṣé ìṣàkóso URL ń yí ìtumọ̀ dátà mi padà?

Rárá. Ìṣàkóso lè yípadà pátápátá. Ìyíparadà àbájáde náà a máa fún ọ ní ọ̀rọ̀ ìpilẹ̀ṣẹ̀ gan-an padà, baiti fún baiti, níwọ̀n bí a ti lo àmì kan náà ní àwọn ẹ̀gbẹ́ méjèèjì.

Báwo ni a ṣe ń mú àwọn àmì tí kì í ṣe ASCII bí àmì-ohùn tàbí emoji?

A kọ́kọ́ sọ wọ́n di baiti UTF-8, lẹ́yìn náà baiti kọ̀ọ̀kan a di ẹ̀ka-mẹ́ta ìdá-ọgọ́rùn-ún tirẹ̀. Lẹ́tà kan tí ó ní àmì-ohùn tàbí emoji kan lè di ẹ̀ka-mẹ́ta púpọ̀ nínú àbájáde tí a ti ṣàkóso.

Ṣé a ń fi ọ̀rọ̀ mi ránṣẹ́ sí sáfà nígbà tí mo bá lo irinṣẹ́ yìí?

Rárá. Ìṣàkóso àti ìyíparadà ń ṣẹlẹ̀ patapata nínú aṣàwárí rẹ. Kò sí ohunkóhun tí o bá fi sí i tí a ń kó lọ, nítorí náà ó jẹ́ àìléwu láti lò ó pẹ̀lú àwọn ọ̀rọ̀ tí ó jẹ́ àṣírí tàbí tí ó ṣe pàtàkì.