gpt4 book ai didi

java - 正确的 FQDN Uri 通过 apache commons UrlValidator 无效

转载 作者:太空宇宙 更新时间:2023-11-04 12:33:50 32 4
gpt4 key购买 nike

首先,我使用 Apache Commons 提供的当前版本的 UrlValidator 库。我正在尝试验证 FQDN URL,如 tcp://cor.rect.url:61616,但不幸的是,验证程序使该 URL 无效。我正在使用以下参数创建 validator :

new UrlValidator(UrlValidator.ALLOW_ALL_SCHEMES + UrlValidator.ALLOW_LOCAL_URLS)

有人遇到过类似的问题吗?有什么解决办法吗?

最佳答案

根据UrlValidator的源码1,它调用DomainValidator ,其中 validates the TLD in the URL .

1 完全限定类名是 org.apache.commons.validator.routines.UrlValidator,不要与已弃用的实现相混淆 org.apache.commons.validator.UrlValidator

DomainValidator 调用 isValidTld检查 TLD。启用 ALLOW_LOCAL_URLS 选项后,它首先根据 isValidLocalTld 中的本地 TLD 列表检查域名,然后根据 isValidInfrastructTldisValidGenericTldisValidCountryCodeTld 检查域。但是,url 未出现在任何列表中。

在允许本地 URL 的情况下,DomainValidatordomain name without dot 进行最终检查对于本地 URL(例如 localhost),但您的 URL 也不属于这种情况。

因此,您的 URL 被 UrlValidator 拒绝。

至于解决办法,看来你可以自己定义RegexValidator并将其传递给 UrlValidator(RegexValidator authorityValidator, long options)构造函数。使用 DomainValidator.isValidAuthority 的源代码可能是个好主意作为从权威部分解析域并提供您自己的逻辑来验证域的引用。

关于java - 正确的 FQDN Uri 通过 apache commons UrlValidator 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37550613/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com