日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

URL编码

發布時間:2023/12/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 URL编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是URL編碼

url編碼是一種瀏覽器用來打包表單輸入的格式

URL編碼與解碼

最近做題經常碰到二次編碼繞過,于是打算系統總結一下關于URL編碼
相關內容

為什么URL要編碼

URL之所以要編碼是因為URL中有些字符會引起歧義

情況一url參數字符串使用key=value鍵值來傳參,鍵值之間用&分隔,如/?admin=123&password=123可是如果是/?admin=12=3&password=12&3這樣value字符串包含了=或&,會造成接收Url服務器解析錯誤,所以必須要將&和=進行轉義
情況二url的編碼格式是ASCII碼,而不是Unicode,也就是說Url中不能包含中文

編碼原則

使用安全字符(沒有特殊意義或者特殊意義的可打印字符)表示不安全字符

哪些字符需要編碼

url中只允許包含英文字母(a-zA-Z)、數字(0-9)、特殊字符-_.~、保留字符(: / ? # [ ] @ ! $ & ’ ( ) * + , ; =)
不安全字符和US-ASCII碼中的非可打印字符(10-7F字節表示控制字符,80-FF字節的字符)

關于保留字符

(: / ? # [ ] @)用于分隔不同組件

  • :用于分隔協議和主機
  • /用于分隔主機和路徑
  • ?用于分隔路徑和查詢參數

(!$&’()*+,;=)用于在每個組件中起到分隔作用

  • =用于 表示查詢參數中的鍵值對
  • &符號用于分隔查詢多個鍵值對
    特別的組件中的普通數據包含這些數據時,需要對其進行編碼

關于不安全字符

不安全字符:可能會引起解析程序的歧義的字符

  • 空格:Url在傳輸的過程,或者用戶在排版的過程,或者文本處理程序在處理Url的過程,都有可能引入無關緊要的空格,或者將那些有意義的空格給去掉
  • 引號以及<>:引號和尖括號通常用于在普通文本中起到分隔Url的作用
  • #:通常用于表示書簽或者錨點
  • %:百分號本身用作對不安全字符進行編碼時使用的特殊字符,因此本身需要編碼(經常被拿來做考點比如結合urldecode()的二次編碼繞過,當傳入參數時,瀏覽器在后面會對非ASCII碼的字符(比如中文)進行一次urlencode
    然后在這段代碼中運行時,會自動進行一次urldecode將先前urlencode的碼給解碼了
  • {}|^[]`~:某一些網關或者傳輸代理會篡改這些字符

三個編碼函數

escape,encodeURI,encodeURIComponent——均用于將不安全不合法的url字符轉換為合法的字符表示

不同點:

  • 安全字符不同(函數不會對這些字符進行編碼)
    • escape(69個):*/@±._0-9a-zA-Z
    • encodeURI(82個):!#$&’()*+,/:;=?@-._~0-9a-zA-Z
    • encodeURIComponent(71個):!’()*-._~0-9a-zA-Z
  • 兼容性不同
  • 對Unicode字符的編碼方式不同
  • 適用場合不同:encodeURI被用作對一個完整的URI進行編碼,而encodeURIComponent被用作對URI的一個組件進行編碼

最后是常用的編碼表
放到這方便查

總結

以上是生活随笔為你收集整理的URL编码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。