URL部分规范术语

时间:2019-02-16 11:25:13

标签: url terminology

我一直在阅读,似乎URL部分没有非常一致和完全被接受的术语。真的吗?我想知道URL部分术语存在哪些标准。最常见的是什么?有没有完善的标准?

我发现了以下内容:

1。 RFC3986 section 3

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

2。 window.location来自浏览器上的Javascript

protocol://username:password@hostname:port/pathname?search#hash
-----------------------------href------------------------------
                             -----host----
-----------      origin      -------------
  • protocol-URL的协议方案,包括最后的':'
  • hostname-域名
  • port-端口号
  • pathname-/路径名
  • search-?参数
  • hash-#fragment_identifier
  • username-在域名之前指定的用户名
  • password-在域名之前指定的密码
  • href-整个URL
  • origin-协议://主机名:端口
  • host-主机名:端口

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                                              │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

4。来自马特·卡茨(Matt Cutts)的article排名很高

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

  • 协议为http。其他协议包括https,ftp等。
  • 主机或主机名是video.google.co.uk。
  • 子域是视频。
  • 域名是google.co.uk。
  • 顶级域名或TLD为uk。 uk域也称为国家/地区代码顶级域或ccTLD。对于google.com,TLD是com。
  • 第二级域(SLD)是co.uk。
  • 端口是80,这是Web服务器的默认端口。其他端口是可能的;例如,Web服务器可以在端口8000上侦听。当端口为80时,大多数人会忽略端口。
  • 路径为/ videoplay。路径通常是指网络服务器上的文件或位置,例如/directory/file.html
  • 此URL具有参数。一个参数的名称是docid,该参数的值是7246927612831078230。URL可以包含很多参数。参数以问号(?)开头,并以与号(&)分隔。

我的一些担忧:

  1. window.location是标准还是基于标准?

  2. 我应该叫http://还是protocol还是scheme

  3. 我要说host还是authority

  4. 为什么window.location和节点也不具有TLD或其他域部分的属性(如果可用)?

  5. hostname(example.com)与 host(example.com:8080)是否成立?

  6. 节点origin
  7. 不包括username:password@,而节点windows.location

我想在我的代码上遵循一个完善的标准或最佳实践。

3 个答案:

答案 0 :(得分:1)

术语取决于您使用的建筑风格/技术。

我更喜欢REST风格来标识URL REST URI Standard 的不同部分

但是我再说一遍,没有单一的通用标准来表示URL

答案 1 :(得分:1)

URI标准为STD 66。当前已映射到RFC 3986

因此,对于通用URI语法,这些术语是权威的,当前为:

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

答案 2 :(得分:0)

Java java.net.URL紧跟RFC 2396,后者是RFC 3986的较早版本。

Python的urlparse也遵循RFC 3986,但出于传统原因,使用netloc代替authority除外。

换句话说,我将遵循RFC 3986。