什么是有效字符可以在URL主机出现?(What are the valid characters t

2019-07-30 06:30发布

我正在写一些代码,处理的URL,我要确保我不会离开一些奇怪的情况下,出...

是否有比其他主机的任何有效字符:AZ,0-9,“ - ”和“”?

(这包括任何可以在子域,等等Esentially,之间的任何东西://和第一/)

谢谢!

Answer 1:

请参阅上有效的主机名称的限制 :

主机名是由一系列级联点标签中的一样,都是域名1 。 例如,“en.wikipedia.org”是主机名。 每个标签必须字符1和63之间的长,而整个主机名具有最多255个字符。

该主机名的标签可能只包含ASCII字母的RFC任务“a”到“Z”(不区分大小写),数字“0”到“9”,和连字符。 主机名标签不能开始或连字符结束。 没有其他符号,标点符号或空格均不允许使用。



Answer 2:

不,这是所有被允许

这里是一个参考,如果你喜欢阅读: http://www.ietf.org/rfc/rfc1034.txt



Answer 3:

要看你做什么级别的验证(之前或URL后逃逸)。 如果您尝试验证用户输入的话,就可以去远远超出ASCII(Unicode的大块大块的)。

见http://en.wikipedia.org/wiki/Internationalized_domain_name

如果你尝试所有的逃逸和“的Punycode”完成后验证,存在验证没有意义的,因为这已经保证仅由老RFC包含有效的字符。



Answer 4:

请记住,除了互联网的主机名规则,DNS系统可以自由地创建他们喜欢的任何名称。 DNS服务器可以接受和回复8位二进制请求:在DNS有线协议并不禁止这样做。

这意味着,对于内部LAN的网址,你可以有不同的规定,如出现在主机名的下划线。



Answer 5:

如果你想编写一个完美的官方W3C规范匹配网址解析代码,请参阅www.w3.org/TR/url-1/文档。 请参阅有关URL中的主机的特定信息的第3(主机)。



Answer 6:

有效的URL主机包括ASCII字母,数字,点和连字符(。)( - )与最大长度255点分开的标签以最大长度为63。连字符可界定字母数字序列例如one-two.net但不能出现在开始的时候还是一个点结束分隔标签如-one.two.com,one.two.com-或one-.two.com是无效的主机。

见https://tools.ietf.org/html/rfc1123#page-79和假设的第1部分https://tools.ietf.org/html/rfc952

另外这是一个链接到在线正则表达式工具来验证其担任的2019年5月28日URL主机https://www.regextester.com/23

也验证主机引用时https://tools.ietf.org/html/rfc1123#page-13你应该在DNS查找它之前语法检查主机的点分十进制数。



文章来源: What are the valid characters that can show up in a URL host?
标签: url host