URL кодлох болон тайлах үйл явцын зорилго, үүрэг
Вэб технологид мэдээллийг сүлжээгээр аюулгүй, алдаагүй дамжуулахын тулд тэмдэгтүүдийг тусгай хэлбэрт хөрвүүлэх шаардлага гардаг. URL кодлол (URL encoding) нь интернэт хаягт шууд ашиглаж болохгүй тэмдэгтүүдийг тусгай код руу хөрвүүлэх үүрэгтэй. Үүний эсрэг үйлдэл болох URL тайлалт (URL decoding) нь кодлогдсон тэмдэгтүүдийг буцаан анхны уншигдах хэлбэрт оруулдаг.
Энэхүү хөрвүүлэлт нь URL доторх асуулгын утга (query values), замын хэсэг (path pieces) эсвэл маягтын утгуудыг (form values) алдаагүй дамжуулахад чухал үүрэг гүйцэтгэдэг. Жишээлбэл, хоосон зай эсвэл тусгай тэмдэгтүүдийг хөтөч болон вэб сервер буруу тайлбарлахаас сэргийлж хувиар кодлох (percent escape) аргыг ашигладаг. Энэхүү хэрэгсэл нь вэб хөгжүүлэгчид, контент редакторууд болон техникийн дэмжлэг үзүүлэх ажилтнуудад зориулагдсан бөгөөд URL болон HTML текст дотор тэмдэгтүүдийг аюулгүйгээр байршуулахад тусалдаг.
Бүрэн URL болон URL бүрэлдэхүүн хэсгийг кодлохын ялгаа
URL-ийг кодлохдоо хамрах хүрээг зөв сонгох нь чухал байдаг. Энэхүү хэрэгсэлд дараах хоёр сонголт бий:
- Бүрэлдэхүүн (Component): Энэ горим нь JavaScript-ийн
encodeURIComponentболонdecodeURIComponentфункцүүдийг ашигладаг. Энэ нь URL-ийн тусгай тэмдэгтүүд болох:,/,?,&,=зэргийг бүгдийг нь кодлодог. Энэ горимыг URL-ийн параметр дотор өөр нэгэн бүтэн URL эсвэл тусгай тэмдэгт бүхий утгыг аюулгүй дамжуулахад ашигладаг. - Бүрэн URL: Энэ горим нь JavaScript-ийн
encodeURIболонdecodeURIфункцүүдийг ашигладаг. Энэ нь URL-ийн үндсэн бүтцийг хадгалж,:,/,?,&,=зэрэг тэмдэгтүүдийг уншигдахуйц хэвээр үлдээдэг. Зөвхөн тухайн URL доторх хоосон зай болон бусад зөвшөөрөгдөөгүй тэмдэгтүүдийг кодлодог.
HTML тэмдэгт хөрвүүлэлт ба түүний ач холбогдол
HTML тэмдэгт хөрвүүлэлт (HTML entity escaping) нь вэб хуудасны эх код дотор тусгай тэмдэгтүүдийг хөтөч буруу уншихаас сэргийлдэг. Хэрэв та вэб хуудсанд <, >, & эсвэл хашилтыг шууд бичвэл хөтөч тэдгээрийг HTML код гэж андууран унших аюултай.
HTML тэмдэгт хөрвүүлэлтийг хийснээр:
<,>,&болон хашилтуудыг аюулгүй тэмдэгт (entity) болгон хувиргана.- ASCII бус текстийг HTML код дотор аюулгүй байршуулах боломжтой болгоно.
- Текстийг HTML хуудасны элементүүд болон атрибутууд дотор алдаагүй хуулж тавих нөхцөлийг бүрдүүлнэ.
Энэхүү хөрвүүлэлт нь зөвхөн тэмдэгтүүдийг хөтөч зөв дүрслэхэд зориулагдсан бөгөөд аюулгүй байдлын бүрэн ариутгал (security sanitization) биш гэдгийг анхаарах хэрэгтэй. Аюулгүй байдлын ариутгал нь хортой кодуудыг шүүж устгах өөр үйл явц юм.
Хувиар кодлох дүрэм ба эвдэрсэн дарааллын алдаа
URL-ийг кодлохдоо тэмдэгт бүрийг UTF-8 дараалалд оруулж, хувийн тэмдэгт (%) болон арван зургаатын тооллын хоёр оронтой тоогоор илэрхийлдэг. Үүнийг хувиар кодлох (percent escape) гэж нэрлэдэг.
URL-ийг буцаан тайлах үед эдгээр хувиар кодлогдсон тэмдэгтүүд нь бүрэн гүйцэд UTF-8 дараалал байх шаардлагатай. Хэрэв дараалал дутуу эсвэл буруу форматтай байвал тайлах үйлдэл амжилтгүй болно. Жишээлбэл, %E0%A4%A гэсэн дутуу дарааллыг тайлахыг оролдвол хэрэгсэл "Энэ URL текст нь эвдэрсэн хувийн кодлолтой (percent escape) байна." гэсэн алдааг заана.
Хэрэгслийн ажиллах зарчим ба нууцлал
Энэхүү хэрэгсэл нь хэрэглэгчийн оруулсан өгөгдлийг боловсруулахдаа дараах дүрмүүдийг баримталдаг:
- Дотоод боловсруулалт: Таны оруулсан URL болон HTML текст нь зөвхөн таны хөтөч дотор хөрвүүлэгдэнэ. BroBroGo сервер рүү ямар нэгэн өгөгдөл илгээгдэхгүй бөгөөд бүх үйлдэл дотооддоо явагдана.
- Хэмжээний хязгаарлалт: Оролтын текстийн дээд хэмжээ 2,000,000 тэмдэгт байна. Хэрэв хязгаар хэтэрвэл "Энэ оролт хэтэрхий том байна.
{max}тэмдэгтээс хэтрүүлэхгүй оруулна уу." гэсэн алдаа гарна. - Хугацааны хязгаарлалт: Хөрвүүлэлт хэт удаан үргэлжилбэл "Энэ хөрвүүлэлт хэтэрхий удаж байна. Бага хэмжээтэй оролт ашиглана уу." гэсэн мэдэгдэл гарна.
- Хоосон оролт: Хэрэв ямар нэгэн текст оруулахгүйгээр хөрвүүлэхийг оролдвол "Эхлээд ямар нэгэн текст хуулж тавина уу." гэж сануулна.
Хэрэглэгчийн интерфэйсийн удирдлага
Хэрэгслийг ашиглахад хялбар болгох үүднээс дараах үйлдлүүдийг дэмждэг:
- Хөрвүүлэх: Сонгосон горимын дагуу текстийг хөрвүүлнэ.
- Жишээ: Туршиж үзэхэд зориулж бэлэн жишээ текстийг ачаална. Энэ үед "Жишээг ачааллаа." гэсэн мэдэгдэл харагдана.
- Үр дүнг ашиглах: Гаралтын талбарт гарсан үр дүнг шууд оролтын талбар руу шилжүүлнэ. Энэ үед "Үр дүнг оролт руу шилжүүллээ." гэсэн мэдэгдэл гарна.
- Цэвэрлэх: Оролт болон гаралтын талбарыг нэгэн зэрэг цэвэрлэнэ. Энэ үед "Оролт болон гаралтыг цэвэрлэлээ." гэсэн мэдэгдэл гарна.
Хэрэв та "HTML тэмдэгтүүд (entities)" горимыг сонговол URL-ийн хамрах хүрээг сонгох хэсэг автоматаар нуугддаг.
Түгээмэл асуултууд (FAQ)
Би URL component эсвэл full URL-ийн алийг нь сонгох ёстой вэ?
Асуулгын утга, замын хэсэг эсвэл маягтын утгуудад Component-ийг ашиглана уу. :, /, ?, &, = зэрэг тэмдэгтүүдийг уншигдахуйц хэвээр үлдээхийг хүсвэл Full URL-ийг ашиглана уу.
HTML тэмдэгт хөрвүүлэлт (entity escaping) юуг өөрчилдөг вэ?
Энэ нь <, >, &, хашилт болон ASCII бус текст зэрэг тэмдэгтүүдийг HTML текст эсвэл атрибутуудад аюулгүйгээр хуулж тавих боломжтой элементүүд (entities) болгон хувиргадаг.
URL тайлалт яагаад заримдаа амжилтгүй болдог вэ?
Хувиар кодлосон (percent escape) тэмдэгтүүд нь бүрэн UTF-8 дараалал байх ёстой. %E0%A4%A зэрэг эвдэрсэн дарааллыг таахгүйгээр тайлах боломжгүй.
Миний оруулсан өгөгдөл сервер рүү илгээгддэг үү?
Үгүй, таны URL болон HTML текст хөтөч дээр тань хөрвүүлэгдэнэ. BroBroGo руу юу ч илгээгдэхгүй.