第一章 URL和資源

2021-08-08 09:52:52 字數 4113 閱讀 6371

概述:就像這個世界上所有的東西都有乙個標準化的名字,以幫助人們可以尋找各種資源一樣,url就是網際網路中資源的標準化的名稱。url指向一條電子資訊片段,告訴你它們位於何處,以及如何與之進行互動。

url組成http::

第二部分:(www.joes-hardware.com)指向的是伺服器的位置:這部分告知web客戶端位於何處。

第三部分:(/seasonal/index.html)資源路徑:路徑說明了請求的是伺服器上哪個特定的本地資源。

url的語法url提供了一種定位網際網路上任意資源的手段,但是這些資源是可以通過各種不同的方案(比如http、ftp、smtp)來訪問的,因此url語法會隨方案的不同而有所不同的。但是這並不意味著每種不同的url方案都會有完全不同的語法,大部分url都遵循通用的url語法,而且不同的url方案的風格和語法都有不少重疊。

元件描述

預設值方案

訪問伺服器以獲取資源時要使用哪種協議無使用者

某些方案訪問資源時需要使用者名稱

匿名密碼

使用者名稱後面可能要包含的密碼,中間由冒號(:)分隔

< e-mail位址 >

主機資源宿主伺服器的主機名會點分ip位址無埠

資源宿主伺服器正在監聽的埠號。很多方案都有預設埠號

每個方案特有

路徑伺服器上資源的本地名,由乙個斜槓(/)將其與前面的url元件分隔開。路徑元件的語法是與伺服器和方案有關的。

引數某些方案會用這個元件來指定輸入的引數。引數為名/值對url中可以包含多個引數字段,它們相互之間以及與路徑的其餘部分之間用分號(;)分隔

查詢某些方案會使用這個元件傳遞 引數以啟用應用程式(比如資料庫、公告板、搜尋引擎以及其他網際網路閘道器)。查詢元件的內容沒有通用的格式。用字元「?」將其與url其他元件分隔開。無片段

一小片或者一部分資源的名字。引用物件時,不會將frag欄位傳送給伺服器;這個欄位是在客戶端內部使用的,通過字元「#」將其與url的其他元件部分分隔開無

url快捷方式:web客戶端可以理解並使用幾種url快捷方式。

封裝資源的基礎url

沒有基礎的url

相對url轉換成絕對url:將相對url和基礎url劃分成元件段,是在分解url,只要將基礎和相對url劃分成了元件,就可以應用以下演算法來完成轉換:

這個演算法將乙個相對url轉換成其絕對模式,之後就可以用它來應用資源了。

可以對例1中的./hammers.html例項使用上述演算法:

(1)路徑為./hammers.html,基礎url為

(2)方案為空,沿著圖示的左半邊向下處理,繼承基礎url方案(http)。

(3)至少乙個元件非空,一直處理到底端,繼承主機和埠元件。

(4)將來自相對url(路徑:./hammers.html)的元件與我們繼承來的元件(方案:http,主機:www.joes-hardware.com,埠:80)合併起來,得到新的絕對url:

自動擴充套件url

有些瀏覽器會在使用者提交url之後,或者在使用者輸入的時候嘗試著自動擴充套件url,這就為使用者提供了一條捷徑:使用者不需要輸入完整的url,瀏覽器會自動幫你進行擴充套件。

「自動擴充套件」特性有兩種方式:

但是這些主機名擴充套件技巧可能會成為其他一些http應用程式帶來問題,比如**。(以後解釋)

url字符集

url字符集

表 一些編碼字元示例

字元ascii碼

例項url

~126(0x7e)

空格32(0x20)

%37(0x25)

在url中,幾個字元被保留起來,有著特殊的含義。有些字元不在定義的us-ascii字符集中,還有些字元會與某些網際網路閘道器和協議產生混淆,因此不贊成使用。

字元保留/受限

%保留作為編碼字元的轉義標誌

/保留作為路徑元件中分隔路徑段的定界符

.保留在路徑元件中使用

..保留在路徑元件中使用

#保留作為分段定界符使用

?保留作為查詢字串定界符使用

;保留作為引數定界符使用

:保留作為方案、使用者/口令,以及主機/埠元件的定界符使用

$,+保留

@ & =

在某些方案的上下文中有特殊的含義,保留

| \ ^ ~ [ ] 『

由於各種傳輸agent**,比如各種閘道器的不安全**,使用受限

< > 「

不安全;這些字元在url範圍之外通常是由意義的,比如在文件中對url自身進行定界,所以應該對其進行編碼

0x00-0x1f,0x7f

受限,這些十六進製制範圍內的字元通常都在us-ascii字符集是不可列印區間

>0x7f

受限,十六進製制在此範圍內的字元都不在us-ascii字符集的7位二進位制範圍內

另外一點說明1.讀者可能會感到奇怪,為什麼使用一些不安全字元的時候並沒有發生不好的事情。比如,你可以訪問而不用對「~」字元進行編碼。對某些傳輸協議來說,這並不是問題,但是對於應用程式開發人員來說,對非安全字元進行編碼仍然是明智的選擇。

2.應用程式要按照一定規範工作,客戶端應用程式在向其他應用程式傳送任意url之前,最好把不安全的或者是受限字元都進行轉換(指客戶端應用程式),只有對所有的不安全字元都進行編碼,這個url就是可在各應用程式之間共享的規範形式;也就無需操心其他應用程式會被字元的任何特殊含義所迷惑了。

3.最適合判斷是否需要對字元進行編碼的程式就是從使用者處獲取url的源端應用程式。url的每個元件都會有自己的安全/不安全字元,哪些字元是安全/不安全的與方案無關,因此只有從使用者那裡接受url的應用程式才能夠判斷需要對哪些字元進行編碼。

4.當然另一種極端的做法就是應用程式對所有的字元都進行編碼。儘管並不建議這麼做,但也沒有什麼強硬且嚴格的規則規定不能對那些安全字元進行編碼;但在實際應用中,有些應用程式可能會假定不對安全字元進行編碼,這麼做的話可能會產生一些奇怪的破壞性行為。

5.有時候,有些人會惡意的對額外的字元進行編碼,以繞過那些對url進行匹配的應用程式—–比如,web過濾程式。對安全的url元件進行編碼會使模式匹配程式無法識別出它們索要搜尋的模式。

總之,解釋url的應用程式必須在處理url之前對其進行解碼。

常見的方案格式

方案描述

超文字傳輸協議方案,除了沒有使用者名稱和密碼之外,與通用的url格式相符。如果省略了埠,就預設為80。基本格式:http://:/?#

方案https和方案http是一對。唯一的區別在於方案https使用了網景的ssl,ssl為http提供了端到端的加密機制。其語法與http的語法相同,預設埠為443。基本格式:https"//:/?#

mailto

mailto url 指向的是e-mail位址。由於e-mail的行為與其他方案有所不同(它並不指向任何可以直接訪問的物件),所以mailto url的格式與標準url的格式有所不同。基本格式:mailto:例項:mailto:[email protected]

ftprtsp,rtspu

file

方案file表示一台指定主機(通過本地磁碟,網路檔案系統或者其他一些檔案共享系統)上可直接訪問的檔案。各自段都遵循通用格式。如果省略了主機號,就預設為正在使用的url的本地主機

telne

方案telnet用於訪問互動式業務。它表示的並不是物件自身,而是可通過telnet協議訪問的互動式應用程式(資源)。基本格式:telnet://:@:/

第一章 人力資源規劃

1.答 1 崗位分析為企業選拔 任用合格的員工奠定了基礎。2 崗位分析為員工考核 晉公升提供了依據。3 崗位分析成為企業改進崗位設計 優化勞動環境的必要條件。4 崗位分析是企業制定有效的人力資源計畫,進行人才 的重要前提。5 崗位分析是崗位評價的基礎,而崗位評價又是建立 健全企業薪酬制度的重要步驟。...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

第一章 緒論

1.16 void print descending int x,int y,int z 按從大到小順序輸出三個數 print descending 1.17 status fib int k,int m,int f 求k階斐波那契序列的第m項的值f gender char schoolname 校...