URL部分规范术语

Joã*_*ira 5 url 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
Run Code Online (Sandbox Code Playgroud)

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

protocol://username:password@hostname:port/pathname?search#hash
-----------------------------href------------------------------
                             -----host----
-----------      origin      -------------
Run Code Online (Sandbox Code Playgroud)
  • 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                                              ?
??????????????????????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

来自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是节点具有TLD或其他域部分的属性(如果可用)?

  5. hostname(example.com)和 host(example.com:8080)之间的术语差异已经确立?

  6. 节点origin不包括username:password@同时为windows.location

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

uno*_*nor 1

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

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

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