我一直在阅读,似乎URL部分没有非常一致和完全被接受的术语。真的吗?我想知道URL部分术语存在哪些标准。最常见的是什么?有没有完善的标准?
我发现了以下内容:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
| _____________________|__
/ \ / \
urn:example:animal:ferret:nose
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
-主机名:端口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 │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
URL: http://video.google.co.uk:80/videoplay?docid=-7246927612831078230&hl=en#00h02m30s
我的一些担忧:
window.location
是标准还是基于标准?
我应该叫http://
还是protocol
还是scheme
?
我要说host
还是authority
?
为什么window.location
和节点也不具有TLD或其他域部分的属性(如果可用)?
hostname
(example.com)与
host
(example.com:8080)是否成立?
origin
的不包括username:password@
,而节点windows.location
的
我想在我的代码上遵循一个完善的标准或最佳实践。
答案 0 :(得分:1)
答案 1 :(得分:1)
因此,对于通用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。