2009-07-15 33 views
9

我正在编写一些处理URL的代码,并且我想确保我不会留下一些奇怪的情况出来...什么是可以在URL主机中显示的有效字符?

除了以外的其他主机是否有任何有效字符:AZ,0-9 ,“ - ”和“。”?

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

谢谢!

+0

鉴于您正在寻找“任何://和第一个/之间的任何内容”,请不要忘记您也可能有一个端口号,如http(s)://my.host.com :8080/... – fredw 2012-05-02 17:38:53

回答

24

请参阅Restrictions on valid host names

主机名是由一系列 标签如同 所有域名连接点。例如, “en.wikipedia.org”是一个主机名。每个 标签的长度必须介于1和63之间,并且整个主机名最多包含255个 个字符。

,一个主机名的标签 可以仅包含ASCII字母的RFC任务“一” 到“z”(不区分大小写),则 数字“0”到“9”,和 连字符。主机名标签不能开始 或以连字符结尾。没有其他 符号,标点符号或 空格被允许。

+0

'en.wikipedia.org'是一个完全合格的域名。它由主机名'en'和域名'wikipedia.org'组成。 – 2015-08-08 22:18:39

3

取决于您进行验证的级别(在URL转义之前或之后)。 如果您尝试验证用户输入,那么它可以超越ASCII(具有大块Unicode)。

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

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

+0

嗯,好点,我需要看看这是否适用于我。在逃跑之前或之后,我不完全确定你的意思,我不确定它是如何适用于我的特殊情况(这有点奇怪)。我得试试这个,谢谢! – 2009-07-16 13:04:44

1

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

这意味着对于内部LAN URL,您可能会有不同的规则,例如出现在主机名中的下划线。

0

如果您想编写完全符合官方W3C规范的URL解析代码,请参阅www.w3.org/TR/url-1/上的文档。有关URL中主机的具体信息,请参阅第3节(主机)。

相关问题