Whiz Tools

Mchoro wa URL

Chombo cha Kukwepa Mifumo ya URL

Utangulizi

Katika ulimwengu wa maendeleo ya wavuti na mawasiliano ya Mtandao, URL (Mifumo ya Rasilimali za Umma) ina jukumu muhimu katika kutambua rasilimali kwenye wavuti. Hata hivyo, URL zina vikwazo juu ya wahusika wanaoweza kuwa ndani yake. Wahusika fulani wana maana maalum, wakati wengine si salama kwa matumizi katika URL kutokana na uwezekano wa kutafsiriwa vibaya au kuharibika wakati wa usafirishaji.

Kuweka mifumo ya URL, pia inajulikana kama kuweka asilimia, ni utaratibu wa kubadilisha wahusika maalum kuwa muundo ambao unaweza kusafirishwa kwenye Mtandao. Chombo hiki kinakuwezesha kuingiza mfuatano wa URL na kukwepa wahusika maalum, kuhakikisha kuwa URL ni halali na inaweza kutafsiriwa kwa usahihi na vivinjari vya wavuti na seva.

Kuelewa Kuweka Mifumo ya URL

Nini Kimeweka Mifumo ya URL?

Kuweka mifumo ya URL kunahusisha kubadilisha wahusika wasiokuwa salama wa ASCII na % ikifuatiwa na tarakimu mbili za hex zinazoonyesha nambari ya ASCII ya wahusika. Hii inahakikisha kuwa habari inasafirishwa kwenye Mtandao bila kubadilishwa.

Kwa mfano, wahusika wa nafasi ' ' hubadilishwa na %20.

Kwa Nini Kuweka Mifumo ya URL Kunahitajika?

URL zinaweza kutumwa kwenye Mtandao kwa kutumia seti ya wahusika wa ASCII pekee. Kwa kuwa URL mara nyingi zina wahusika nje ya seti hii, zinapaswa kubadilishwa kuwa muundo halali wa ASCII. Kuweka mifumo ya URL kunahakikisha kuwa wahusika maalum hawawezi kusababisha athari zisizokusudiwa au makosa katika maombi ya wavuti.

Wahusika Wanaohitaji Kuwekwa

Kulingana na kiwango cha RFC 3986, wahusika ifuatayo ni akiba katika URL na lazima iwekwe asilimia ikiwa inapaswa kutumika kwa maana halisi:

  • Wajumuishaji wa jumla: :, /, ?, #, [, ], @
  • Wajumuishaji wa sehemu: !, $, &, ', (, ), *, +, ,, ;, =

Zaidi ya hayo, wahusika wowote wasiokuwa wa ASCII, ikiwa ni pamoja na wahusika katika Unicode, lazima wawekwe.

Kazi ya Kuweka Mifumo ya URL

Utaratibu wa Kuweka

  1. Tambua Wahusika Maalum: Changanua mfuatano wa URL na tambua wahusika ambao si wahusika wa ASCII wasio akiba (herufi, nambari, -, ., _, ~).

  2. Badilisha kuwa Nambari ya ASCII: Kwa kila wahusika maalum, pata nambari yake ya ASCII au nambari ya Unicode.

  3. Badilisha kuwa Mfuatano wa Byte za UTF-8 (ikiwa inahitajika): Kwa wahusika wasiokuwa wa ASCII, weka wahusika katika byte moja au zaidi kwa kutumia kuweka UTF-8.

  4. Badilisha kuwa Hexadecimal: Badilisha kila byte kuwa thamani yake ya hexadecimal ya tarakimu mbili.

  5. Ongeza Ishara ya Asilimia: Weka kila byte ya hexadecimal kwa ishara ya %.

Mfano wa Kuweka

  • Wahusika: ' ' (Nafasi)

    • Nambari ya ASCII: 32
    • Hexadecimal: 20
    • Imewekwa URL: %20
  • Wahusika: 'é'

    • Kuweka UTF-8: 0xC3 0xA9
    • Imewekwa URL: %C3%A9

Mambo ya Kuangalia

  • Wahusika wa Unicode: Wahusika wasiokuwa wa ASCII lazima waweke katika UTF-8 na kisha kuwekwa asilimia.

  • Ishara za asilimia zilizo tayari kuwekwa: Ishara za asilimia ambazo ni sehemu ya kuweka asilimia hazipaswi kuwekwa tena.

  • Wahusika wa Akiba katika Mfuatano wa Maswali: Wahusika fulani wana maana maalum katika mfuatano wa maswali na wanapaswa kuwekwa ili kuzuia kubadilisha muundo.

Kuweka Mifumo ya URL

Nini Kimeweka Mifumo ya URL?

Kuweka mifumo ya URL ni mchakato wa kinyume wa kuweka mifumo ya URL. Inabadilisha wahusika waliowekwa asilimia kuwa fomu yao ya asili, ikifanya URL iweze kusomeka na kueleweka na wanadamu na mifumo.

Utaratibu wa Kuweka

  1. Tambua Mfuatano wa Kuweka Asilimia: Tafuta ishara zote za % zilizo na tarakimu mbili za hexadecimal katika mfuatano wa URL.

  2. Badilisha Hexadecimal kuwa Byte: Tafsiri kila thamani ya hexadecimal kuwa byte inayohusiana.

  3. Weka Byte za UTF-8 (ikiwa inahitajika): Kwa mfuatano wa byte nyingi, ungana byte hizo na uweke kwa kutumia kuweka UTF-8 ili kupata wahusika wa asili.

  4. Badilisha Mfuatano wa Kuweka: Badilisha mfuatano wa kuweka asilimia na wahusika waliowekwa.

Mfano wa Kuweka

  • Imewekwa: hello%20world

    • %20 inatafsiriwa kuwa nafasi ' '
    • Imewekwa: hello world
  • Imewekwa: J%C3%BCrgen

    • %C3%A4 inatafsiriwa kuwa 'ü' katika UTF-8
    • Imewekwa: Jürgen

Umuhimu wa Kuweka Mifumo ya URL

Kuweka mifumo ya URL ni muhimu wakati wa kushughulikia pembejeo za mtumiaji kutoka kwa URL, kusoma vigezo vya maswali, au kutafsiri data inayopokelewa kutoka kwa maombi ya wavuti. Inahakikisha kuwa habari iliyotolewa kutoka kwa URL iko katika fomu yake sahihi, iliyo kusudiwa.

Matumizi

Maendeleo ya Wavuti

  • Vigezo vya Maswali: Kuweka pembejeo za mtumiaji katika vigezo vya maswali ili kuzuia makosa au hatari za usalama.

  • Vigezo vya Njia: Kuongeza data ya dynamic salama katika njia za URL.

Usafirishaji wa Data

  • API na Huduma za Wavuti: Kuhakikisha data inayotumwa kwa API imewekwa vizuri.

  • Kimataifa: Kusaidia URL zenye wahusika kutoka lugha mbalimbali.

Usalama

  • Kuzuia Mashambulizi ya Uingiliaji: Kuweka pembejeo ili kupunguza hatari ya uandishi wa msalaba (XSS) na mashambulizi mengine ya uingiliaji.

Mbadala

Ingawa kuweka mifumo ya URL ni muhimu, kuna hali ambapo mbinu nyingine za kuweka zinaweza kuwa bora zaidi:

  • Kuweka Base64: Kutumika kwa kuweka data ya binary ndani ya URL au wakati unahitaji wingi wa habari zaidi.

  • Kuweka UTF-8 bila Kuweka Asilimia: Mifumo mingine hutumia kuweka UTF-8 moja kwa moja, lakini hii inaweza kusababisha matatizo ikiwa haitashughulikiwa vizuri.

Fikiria maelezo ya programu yako ili kuchagua mbinu inayofaa zaidi ya kuweka.

Historia

Kuweka mifumo ya URL kuliwasilishwa pamoja na viwango vya mapema vya URL na URI (Mifumo ya Rasilimali za Umma) katika miaka ya 1990. Hitaji la njia ya kawaida ya kuweka wahusika maalum lilitokea kutokana na mifumo na seti za wahusika mbalimbali zinazotumika duniani kote.

Maalum muhimu ni pamoja na:

  • RFC 1738 (1994): Ilifafanua URL na kuanzisha kuweka asilimia.

  • RFC 3986 (2005): Ilisasisha sintaksia ya URI, ikirekebisha sheria za kuweka.

Kwa muda, kuweka mifumo ya URL imekuwa muhimu kwa teknolojia za wavuti, ikihakikisha mawasiliano ya kuaminika kati ya mifumo na majukwaa tofauti.

Mifano ya Kanuni

Hapa kuna mifano ya jinsi ya kufanya kuweka mifumo ya URL katika lugha mbalimbali za programu:

' Mfano wa Excel VBA
Function URLEncode(ByVal Text As String) As String
    Dim i As Integer
    Dim CharCode As Integer
    Dim Char As String
    Dim EncodedText As String

    For i = 1 To Len(Text)
        Char = Mid(Text, i, 1)
        CharCode = AscW(Char)
        Select Case CharCode
            Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
                EncodedText = EncodedText & Char
            Case Else
                If CharCode < 0 Then
                    ' Shughulikia wahusika wa Unicode
                    EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
                Else
                    EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
                End If
        End Select
    Next i
    URLEncode = EncodedText
End Function

' Matumizi:
' =URLEncode("https://example.com/?name=Jürgen")
% Mfano wa MATLAB
function encodedURL = urlEncode(url)
    import java.net.URLEncoder
    encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
end

% Matumizi:
% encodedURL = urlEncode('https://example.com/?name=Jürgen');
## Mfano wa Ruby
require 'uri'

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = URI::DEFAULT_PARSER.escape(url)
puts encoded_url
## Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Mfano wa Rust
use url::form_urlencoded;

fn main() {
    let url = "https://example.com/path?query=hello world&name=Jürgen";
    let encoded_url = percent_encode(url);
    println!("{}", encoded_url);
    // Matokeo: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
}

fn percent_encode(input: &str) -> String {
    use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
    utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
}
## Mfano wa Python
import urllib.parse

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = urllib.parse.quote(url, safe=':/?&=')
print(encoded_url)
## Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Mfano wa JavaScript
const url = 'https://example.com/path?query=hello world&name=Jürgen';
const encodedURL = encodeURI(url);
console.log(encodedURL);
// Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Mfano wa Java
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com/path?query=hello world&name=Jürgen";
        String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
        // Badilisha "+" na "%20" kwa nafasi
        encodedURL = encodedURL.replace("+", "%20");
        System.out.println(encodedURL);
        // Matokeo: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
    }
}
// Mfano wa C#
using System;
using System.Net;

class Program
{
    static void Main()
    {
        string url = "https://example.com/path?query=hello world&name=Jürgen";
        string encodedURL = Uri.EscapeUriString(url);
        Console.WriteLine(encodedURL);
        // Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
    }
}
<?php
// Mfano wa PHP
$url = 'https://example.com/path?query=hello world&name=Jürgen';
$encodedURL = urlencode($url);
echo $encodedURL;
// Matokeo: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
?>
// Mfano wa Go
package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlStr := "https://example.com/path?query=hello world&name=Jürgen"
    encodedURL := url.QueryEscape(urlStr)
    fmt.Println(encodedURL)
    // Matokeo: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
}
// Mfano wa Swift
import Foundation

let url = "https://example.com/path?query=hello world&name=Jürgen"
if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
    print(encodedURL)
    // Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
}
## Mfano wa R
url <- "https://example.com/path?query=hello world&name=Jürgen"
encodedURL <- URLencode(url, reserved = TRUE)
print(encodedURL)
## Matokeo: https://example.com/path?query=hello%20world&name=J%C3%BCrgen

Kumbuka: Matokeo yanaweza kutofautiana kidogo kulingana na jinsi kila lugha inavyoshughulikia wahusika wa akiba na nafasi (kwa mfano, kuweka nafasi kama %20 au +).

Mchoro wa SVG wa Utaratibu wa Kuweka Mifumo ya URL

Utaratibu wa Kuweka Mifumo ya URL URL ya Asili Tambua Wahusika Maalum Weka URL Mfano: Ingizo: https://example.com/über uns Matokeo: https://example.com/%C3%BCber%20uns

Maoni ya Usalama

Kuweka na kuweka mifumo ya URL kwa usahihi ni muhimu kwa usalama:

  • Kuzuia Mashambulizi ya Uingiliaji: Kuweka pembejeo za mtumiaji husaidia kuzuia msimbo mbaya usifanye kazi, kupunguza hatari kama vile uandishi wa msalaba (XSS) na mashambulizi mengine ya uingiliaji.

  • Uaminifu wa Data: Inahakikisha kuwa data inasafirishwa bila kubadilishwa au kuharibika.

  • Uzingatiaji wa Viwango: Kufuata viwango vya kuweka huzuia matatizo ya ushirikiano kati ya mifumo.

Marejeleo

  1. RFC 3986 - Kitambulisho cha Rasilimali (URI): https://tools.ietf.org/html/rfc3986
  2. Nini Kimeweka Mifumo ya URL na Inafanya Kazi? https://www.urlencoder.io/learn/
  3. Kuweka asilimia: https://en.wikipedia.org/wiki/Percent-encoding
  4. Kiwango cha URL: https://url.spec.whatwg.org/
  5. URI.escape ni ya zamani: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated

Hitimisho

Kuweka mifumo ya URL ni kipengele muhimu cha maendeleo ya wavuti na mawasiliano ya Mtandao. Kwa kubadilisha wahusika maalum kuwa muundo salama, inahakikisha kuwa URL zinatafsiriwa kwa usahihi na vivinjari na seva, ikihifadhi uaminifu na usalama wa usafirishaji wa data. Chombo hiki kinatoa njia rahisi ya kukwepa wahusika maalum katika URL zako, kuboresha ulinganifu na kuzuia makosa au hatari za usalama zinazoweza kutokea.

Maoni