簡體   English   中英

URL部分規范術語

[英]URL parts canonical terminology

我一直在閱讀,似乎沒有很好的連貫和完全接受的URL部分術語。 真的嗎? 我想知道URL部分術語存在哪些標准。 什么是最常見的? 有沒有完善的標准?

我找到了以下內容:

1. RFC3986第3節

     foo://example.com:8042/over/there?name=ferret#nose
     \_/   \______________/\_________/ \_________/ \__/
      |           |            |            |        |
   scheme     authority       path        query   fragment
      |   _____________________|__
     / \ /                        \
     urn:example:animal:ferret:nose

2.來自瀏覽器上的Javascript的window.location

protocol://username:password@hostname:port/pathname?search#hash
-----------------------------href------------------------------
                             -----host----
-----------      origin      -------------
  • protocol - URL的協議方案,包括最終的':'
  • hostname - 域名
  • port - 端口號
  • pathname - / pathname
  • search - ?參數
  • hash - #fragment_identifier
  • username - 在域名之前指定的用戶名
  • password - 域名前指定的密碼
  • href - 整個網址
  • origin - protocol:// hostname:port
  • host - hostname:port

3. NodeJS,模塊url

在帶有URL的行上方,您可以看到節點的url模塊舊API,而在該行下,您會看到新的API。 似乎節點從RFC標准術語轉移到更加瀏覽器友好的標准術語,即類似於瀏覽器的windows.location

┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                              href                                              │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │  │        auth         │          host          │           path            │ hash  │
│          │  │                     ├─────────────────┬──────┼──────────┬────────────────┤       │
│          │  │                     │    hostname     │ port │ pathname │     search     │       │
│          │  │                     │                 │      │          ├─┬──────────────┤       │
│          │  │                     │                 │      │          │ │    query     │       │
"  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          │  │          │          │    hostname     │ port │          │                │       │
│          │  │          │          ├─────────────────┴──────┤          │                │       │
│ protocol │  │ username │ password │          host          │          │                │       │
├──────────┴──┼──────────┴──────────┼────────────────────────┤          │                │       │
│   origin    │                     │         origin         │ pathname │     search     │ hash  │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│                                              href                                              │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

來自Matt Cutts的高度評價的文章

URL: http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#00h02m30s

  • 該協議是http。 其他協議包括https,ftp等。
  • 主機或主機名是video.google.co.uk。
  • 子域名是視頻。
  • 域名是google.co.uk。
  • 頂級域名或頂級域名是英國。 英國域名也稱為國家/地區代碼頂級域名或ccTLD。 對於google.com,TLD將是com。
  • 二級域名(SLD)是co.uk.
  • 端口為80,這是Web服務器的默認端口。 其他港口是可能的; 例如,Web服務器可以在端口8000上偵聽。 當端口是80時,大多數人都離開了端口。
  • 路徑是/ videoplay。 路徑通常是指Web服務器上的文件或位置,例如/directory/file.html
  • 此URL包含參數。 一個參數的名稱是docid,該參數的值是7246927612831078230.URL可以有很多參數。 參數以問號(?)開頭,並用&符號(&)分隔。

我的一些擔憂:

  1. window.location是標准還是基於標准?

  2. 我應該調用http:// protocol還是scheme

  3. 我要說host還是authority

  4. 為什么window.location和node都沒有TLD或其他域部分的屬性(如果可用)?

  5. hostname (example.com)和host (example.com:8080)之間的術語差異已經確立?

  6. 對於節點origin ,不包括username:password@而對於windows.location ,則為

我想在我的代碼上遵循完善的標准或最佳實踐。

術語取決於您使用的架構風格/技術。

我更喜歡使用REST樣式來識別我的URL REST URI標准的不同部分

但我再說一遍,沒有單一的通用標准來表示URL

URI標准是STD 66 目前這已映射到RFC 3986

因此,對於通用URI語法,這些術語是權威的,目前:

  • scheme
  • authority
    • userinfo
    • host
    • port
  • path
  • query
  • fragment

Java java.net.URL遵循RFC 2396 ,它是RFC 3986的舊版本。

Python的urlparse也遵循RFC 3986,除了因遺留原因可能使用netloc而不是authority

換句話說,我會遵循RFC 3986。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM