URL部分规范术语

问题描述 投票:5回答:3

我一直在阅读,似乎没有很好的连贯和完全接受的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.来自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 - 主机名:端口

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的排名很高的article

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://称为protocolscheme吗?
  3. 我要说hostauthority
  4. 为什么window.location和节点都没有TLD或其他域部分的属性?
  5. hostname(example.com)和host(example.com:8080)之间的术语差异已经确立?
  6. 对于节点origin不包括username:password@,而对于windows.location它确实

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

url terminology
3个回答
1
投票

术语取决于您使用的架构风格/技术。

我更喜欢REST风格来识别我的网址REST URI Standard 的不同部分

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


1
投票

URI标准是STD 66。目前这是映射到RFC 3986

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

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

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.