子域(域名)可以有下划线_吗?
当前回答
以下是我在Java世界的2点看法:
在Spark Scala控制台,使用Java 8:
scala> new java.net.URI("spark://spark_master").getHost
res10: String = null
scala> new java.net.URI("spark://spark-master").getHost
res11: String = spark-master
scala> new java.net.URI("spark://spark_master.google.fr").getHost
res12: String = null
scala> new java.net.URI("spark://spark.master.google.fr").getHost
res13: String = spark.master.google.fr
scala> new java.net.URI("spark://spark-master.google.fr:3434").getHost
res14: String = spark-master.google.fr
scala> new java.net.URI("spark://spark-master.goo_gle.fr:3434").getHost
res15: String = null
这绝对是个坏主意^^
其他回答
不,你不能在子域中使用下划线,只能在连字符(破折号)中使用。例如,my-subdomain.agahost.com是可以接受的,my_subdomain.agahost.com是不可以接受的。
我参考了RFC1034的链接,阅读了大部分内容,并惊讶地看到了这个:
标签必须遵循ARPANET主机名规则。他们必须 以字母开头,以字母或数字结尾,内部相同 只能使用字母、数字和连字符。还有一些 长度限制。标签必须小于等于63个字符。
为了说明,域名由标签组成,标签之间用点“。”隔开。这个规范肯定过时了,因为它没有提到下划线的使用。如果有人在不知道这个规范已经过时的情况下偶然发现它,我可以理解这种困惑。它已经过时了,不是吗?
我参考了RFC2181的链接并阅读了其中的一些内容。特别是当它涉及到什么是权威或规范名称的问题,以及什么是有效的DNS标签的问题时。
正如之前发布的那样,它只限制了长度,然后总结起来是这样的:
(关于名称和有效标签)
这些已经被充分地指定了,但是这些规范有时似乎被忽略了。我们寻求加强现有的规范。
有点让我怀疑“只限制长度”是否“足够”。我们会开始看到像@#$%这样的域名吗!!很快吗?难道互联网还不够糟糕吗?
还有一件事你可能需要知道:如果url的主机或子域部分包含下划线,IE9(尚未测试其他版本)不能编写cookie。
所以要小心。: -)
这里给出的大多数答案都是错误的。这是完全合法的 域名中的下划线。让我引用标准,RFC 2181,第11节,“名称语法”:
DNS本身对特定的标签只有一个限制 可用于标识资源记录。那一个 限制涉及到标签的长度和完整 的名字。[…DNS协议的实现不能放置任何 对可使用标签的限制。特别是DNS 服务器不能因为一个区域包含标签而拒绝提供服务 这对于某些DNS客户端程序来说可能是不可接受的。
请参见原始DNS规范,RFC 1034,第3.5节 "首选名称语法"但请仔细阅读。
带下划线的域在野外非常常见。检查_jabber._tcp.gmail.com或_sip._udp.apnic.net。
这里提到的其他RFC处理不同的事情。最初的 问题是关于域名的。如果问题是关于主持人的 名称(或者对于包含主机名的url),则为 不同的是,相关的标准是RFC 1123,章节2.1“主机 名称和数字”,将主机名限制为 letters-digits-hyphen。
最近cab论坛(*)决定
在任何dNSName条目中包含下划线字符且有效期超过30天的所有证书必须在2019年1月15日之前撤销。https://cabforum.org/2018/11/12/ballot-sc-12-sunset-of-underscores-in-dnsnames/
这意味着您将不再允许在具有ssl/tls证书的域中使用下划线。
(*)证书颁发机构浏览器论坛(CA/浏览器论坛)是主要证书颁发者(定义见下文2.1(a)(1)和(2)节)和互联网浏览器软件和其他使用证书的应用程序供应商(定义见下文2.1(a)(3)节)的自愿聚会。
推荐文章
- 如何列出所有DNS记录?
- 没有href属性的锚标记安全吗?
- CSV文件可以有注释吗?
- 当使用带有子域的邮差时,出现“无法得到任何响应”的响应
- (域名)子域名中可以有下划线“_”吗?
- JSON语法是否允许在对象中重复键?
- 错误“getaddrinfo EAI_AGAIN”的原因是什么?
- 我如何得到一个域的所有子域的列表?
- __PRETTY_FUNCTION__, __FUNCTION__, __func__之间的区别是什么?
- iframe被认为是“不好的做法”吗?
- Windows主机文件中的通配符
- 编码约定-命名枚举
- 如何找到域名的权威名称服务器?
- 从URL获取协议、域和端口
- 我在哪里可以找到当前的C或c++标准文档?