前端基础——URL详解
文章目錄
- 一:URL舉例
- 二:URL通用格式
- URL的語法:
- 通用格式:
- URL的分類:
- 絕對URL:
- 相對URL:
- 三:URL特殊字符
一:URL舉例
就以下面這個URL為例,介紹下普通URL的各部分組成
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
從上面的URL可以看出,一個完整的URL包括以下幾部分:
協議部分:該URL的協議部分為“http:”,這代表網頁使用的是HTTP協議。在Internet中可以使用多種協議,如HTTP,FTP等等本例中使用的是HTTP協議。在"HTTP"后面的“//”為分隔符
域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用
端口部分:跟在域名后面的是端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認端口
虛擬目錄部分:從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”
文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的文件名
錨部分:從“#”開始到最后,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分
參數部分:從“?”開始到“#”為止之間的部分為參數部分,又稱搜索部分、查詢部分。本例中的參數部分為“boardID=5&ID=24618&page=1”。參數可以允許有多個參數,參數與參數之間用“&”作為分隔符。
二:URL通用格式
URL的語法:
大多數URL語法都建立在9個部分構成的通用格式上,而其中最重要的是方案(scheme)、主機(host)和路徑(path)
通用格式:
方案://用戶名:密碼@主機名:端口/服務器上資源的路徑;參數?查詢#片段
方案:指訪問服務器以獲取資源時要使用哪種協議。比如,http、https和FTP等
主機和端口:指資源宿主服務器的主機名或IP地址。端口是指資源宿主服務器正在監聽的端口,很多HTTP的默認端口號是80。比如,130.32.12.34:800,這里的IP地址是主機名,端口是800
用戶名和密碼:很多服務器都要求輸入用戶名和密碼才會允許用戶訪問數據,如FTP服務器。
例子:joe是用戶名、joepasswd是密碼
ftp://joe:joepasswd@ftp.prep.edu/pub/name
路徑:路徑說明了資源位于服務器的什么地方。
例子:/cans/index.html就是URL中的路徑
http://www.hda.com/cans/index.html
參數:為了向應用程序提供它們所需要的輸入參數,以便正確地與服務器進行交互,URL中有個參數組件。由字符“;”將其與URL的其余部分分隔開來。
例子:;type=7;nam=true就是兩個參數。
ftp://prep.mit.edu/pub;type=7;nam=true
查詢:很多資源,比如數據庫服務、搜索引擎,都可以通過提問題或進行查詢來縮小請求資源的范圍。由字符“?”將其與URL的其余部分分隔開來。
例子:查詢組件有兩個名/值對:name=csh和age=24
http://www.cheng.cn/si.html?name=csh&age=24
片段:#代表網頁中的一個位置,其右面的字符就是該位置的標識符(一般情況下,錨鏈接會用到)
例子:下面的URL中,代表網頁si.index的print位置,瀏覽器讀取這個URL后,會自動將print位置滾動至可視區域。
http://www.cheng.cn/si.html#print
URL的分類:
URL可以分為絕對URL和相對URL
絕對URL:
絕對URL中包含了訪問資源所需的全部信息。
案例:<a href=’http://cheng.com/si.html></a>
相對URL:
相對URL包含的只是訪問資源所需的部分信息。而要想得到訪問資源的全部信息的話,就要和另一個被稱為基礎(base)的URL結合進行解析
案例:<script src="lib/sea.js"></script>
相對URL中的基礎URL:轉換相對URL的第一步就是找到基礎URL
在資源中顯式地指定基礎URL。比如,HTML文檔中可能會包含一個定義了基礎URL的HTML標簽
封裝資源的基礎URL。在HTML中,基礎URL可以從它們所屬資源的基礎URL中推導出來
三:URL特殊字符
有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那么就要使用他們的編碼了。編碼的格式為:%加字符的ASCII碼,即一個百分號%,后面跟對應字符的ASCII(16進制)碼值。例如 空格的編碼值是"%20"。
下表中列出了一些URL特殊符號及編碼
:替換為%3A
例:要傳遞字符串“this%is#te=st&o k?+/”作為參數t傳給te.asp,則URL可以是:
te.asp?t=this%25is%23te%3Dst%26o%20k%3F%2B%2F 或者
te.asp?t=this%25is%23te%3Dst%26o+k%3F%2B%2F (空格可以用%20或+代替)
java中URL 的編碼和解碼函數
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
在javascript 中URL 的編碼和解碼函數
escape(String s)和unescape(String s) ;
Java
中URL 的編碼和解碼函數
java
.NET
.URLEncoder.encode(String s)和java
.Net
.URLDecoder.decode(String s);
在
JavaScript
中URL 的編碼和解碼函數
escape(String s)和unescape(String s) ;
點的轉義:. ==> u002E
美元符號的轉義:$ ==> u0024
乘方符號的轉義:^ ==> u005E
左大括號的轉義:{ ==> u007B
左方括號的轉義:[ ==> u005B
左圓括號的轉義:( ==> u0028
豎線的轉義:| ==> u007C
右圓括號的轉義:) ==> u0029
星號的轉義:* ==> u002A
加號的轉義:+ ==> u002B
問號的轉義:? ==> u003F
反斜杠的轉義: ==> u005C
舉例:
我們需要模擬的地址為:
https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=en_US&=1453725386008,所以我們模擬的代碼如下:
#coding=utf8 import time, requests session = requests.Session() url = 'https://login.weixin.qq.com/jslogin' params = {'appid': 'wx782c26e4c19acffb','redirect_uri': 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage','fun': 'new','lang': 'en_US','_': int(time.time()),} r = session.get(url, params = params) print('Content: %s'%r.text)總結
以上是生活随笔為你收集整理的前端基础——URL详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html清理超链接前面的黑点,吹毛求疵:
- 下一篇: 2017年html5行业报告,云适配发布