URI的基本格式以及與URL的區別


  • 當沒有URI時:
      • 站長欲分享一部電影給Forrest Gump給B時,需要告訴:
      • 請使用FTP協議訪問mysite.net,端口是8502
      • 登陸用戶名是user,密碼是pass
      • 進入到/shared/movie/目錄下
      • 轉換為二進制格式
      • 下載名字為Forrest Gump.mkv格式的文件
  • 有了URIftp://user:pass@mysite.net:8502/shared/movie/Forrest Gump.mkv(我們管這種方式也可以叫URL)

URL:RFC1738(1994.12),Uniform Resource Locator ,表示資源的位置,期望找到提供查找資源的方法。

URN: RFC2141(1997.5),Uniform Resource Name ,期望為資源提供持久的的,與位置無關的的表示方式,並允許簡單的將多個命名空間映射到單個URN命名空間。

  • 例如磁力鏈接:magnet:?xt=urn:sha1:YNCKHTQC5C

URI:RFC1630(1994.6)、RFC3986(2005.1,取代RFC2396和RFC2732),Uniform Resource Identifier,用以區分資源,是URL和URN的超集,用以取代URL和URN概念

Uniform Resource Identifier 統一資源標識符

Resource資源

  • 可以是圖片、文檔、今天上海的天氣溫度,也可以是不能通過互聯網訪問的實體
  • 一個資源可以有多個URI

Identifier 標識符

  • 將當前資源與其他資源區分開的名稱

Uniform 統一

  • 允許不同種類的資源在同一上下文中出現
  • 對不同種類資源標識符可以使用同一語義進行解讀
  • 引入新標識符時,不會對已有標識符產生影響
  • 允許同一資源標識符在不同的、Internet規模下的上下文中出現

合法的URI:

  • ftp://ftp.is.co.za/rfc/rfc1808.txt
  • http://www.ietf.org/rfc/rfc2396.txt
  • ldap://[2001:db8::7]/c=GB?objectClass?one
  • mailto:John.Doe@example.com
  • news:comp.infosystems.www.servers.unix
  • telnet://192.0.2.16:80/
  • urn:oasis:names:specification:docbook:dtd:xml:4.1.2


URI格式

  • URI = scheme ":" hire-part ["?" query] [ "#" fragment ]
  • scheme = ALPHA * (ALPHA / DIGIT / "+" / "-" / "." ) 
      • 例如 http,https,ftp,mailto,rtsp,file,telnet
  • query = *( pchar / "/" / "?" )
  • fragment = * ( pchar / "/" / "?"  )

 示例: https://tools.ietf.org/html/rfc/7231?test=1#page-7

 hire-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty 

  • authority = [ userinfo "@" ] host [ ":" port]
  • userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
  • host = IP-literal / IPv4adress / reg-name
  • port = *DIGIT

  實例:https://tom:pass@localhost:8080/index.html

 path = path-abempty / path-absolute / path-noscheme / path-rootless / path-empty

  • path-abempty = *( "/" segment) 以/開頭的路徑或者空路徑
  • path-absolute = "/" [ segment-nz *( "/" segment )] 以/開頭的路徑,但是不能以//開頭
  • path-noscheme  = segment-nz-nc *( "/" segment )以非:開頭的路徑
  • path-rootless = segment-nz *( "/" segment )相對path-noscheme,增加允許以:開頭的路徑
  • path-empty = 0 < pchar > 空路徑

 向正向代理發出的請求中,傳遞的絕對URI。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM