http url 的path究竟可以包含哪些字元?

2021-09-24 10:04:32 字數 2072 閱讀 6432

為什麼80%的碼農都做不了架構師?>>>

你覺得下面這些看起來像url的東西是啥?

其實它們也是url,而且但從語義和語法來講,它們都是正確的url,但是osc肯定沒有這些url所對應的資源(我試過了^_^)。

因為開發mvc時,我要解析url中 path 部分,就要知道path中能包含什麼字元,所以就研究rfc中關於url的path部分的定義。

乙個典型的http url 大概是長這樣的(只討論你手動在瀏覽器中輸入url的情況):

它的結構分析如下:

partdata

協議 http

協議和主機名的分隔符

://

主機 bornmoney.com

查詢路徑

/money/rmb

路徑與查詢引數的分隔符

? 查詢引數

quantity=1000000

本文討論內容侷限在「查詢路徑」部分,**查詢路徑中每個path segment(上表中的money or rmb)最終所能包含的字元。

開始在網上找了好久都找到滿意的答案,全部都是說url中 哪些字元需要轉碼,而哪些字元不需要轉碼的。至於最終哪些字元會出現在path segment上,並沒有直接說明。最終只能自己動手了——查rfc檔案。

rfc1738檔案的17~18頁中有關於http url的語法和文法定義。我後來把與path segment相關的部分摘抄如下:

一開始我看不懂那個定義到底是怎麼回事,後來才知道這是用擴充巴科斯-瑙爾正規化(abnf)定義的,關於abnf的規則較多,可以參考這裡:擴充巴科斯正規化

用abnf正規化去解讀 rfc1738 對http url的定義,我們就知道定義規則右邊出現的所有字元都可以出現在path segment中,這就能解釋開頭哪些奇怪的url居然是正確的了。

Path路徑的寫法

一 相對路徑 表示根目錄 表示當前目錄 表示父級 上一級 目錄 表示檔案所在的父級目錄的父級目錄 二 絕對路徑1.檢視屬性 2.貼上路徑 檔名 三 舉個栗子 1.絕對路徑 path r e book 網頁布局 第2章 bg.jpg 2.相對路徑sitation 1 指當前檔案所在目錄下的bg.jp檔...

diff和path的用法

diff和patch是一對工具,在數學上來說,diff是對兩個集合的差運算,patch是對兩個集合的並運算。diff比較兩個檔案或檔案集合的差異,並記錄下來,生成乙個diff檔案,這也是我們常說的patch檔案,即補丁檔案。patch能將diff檔案運用於 原來的兩個集合之一,從而得到另乙個集合。舉...

Path類的方法筆記

path類 用途 繪製複雜的圖形輪廓,比如折線,圓弧以及各種複雜圖案 先初始化乙隻筆 paint.setstrokewidth 設定畫筆寬度 paint.setantialias true 消除鋸齒 paint.setstyle style.stroke 設定風格 方便檢視效果 以下方法 reset...