http.nonProxyHosts的有效正则表达式

时间:2013-07-12 12:49:00

标签: java regex proxy

我想通过系统属性设置nonProxyHosts 我希望除两个URL之外直接访问所有HTTP URL。为此,不要为nonProxyHosts配置risky的所有主机名,而不是proxied 我是否可以通过正则表达式对其进行配置,该表达式使所有URL都减去了http.nonProxyHosts=[^*host1*]|[^*host2*] 的URL。

我的正则表达式可以是这样的吗?

{{1}}

1 个答案:

答案 0 :(得分:0)

protected Pattern createNonProxyPattern(String nonProxyHosts) {
        if (nonProxyHosts == null || nonProxyHosts.equals("")) return null;

        // "*.fedora-commons.org" -> ".*?\.fedora-commons\.org" 
        nonProxyHosts = nonProxyHosts.replaceAll("\\.", "\\\\.").replaceAll("\\*", ".*?");

        // a|b|*.c -> (a)|(b)|(.*?\.c)
        nonProxyHosts = "(" + nonProxyHosts.replaceAll("\\|", ")|(") + ")";

        try {
            return Pattern.compile(nonProxyHosts);

            //we don't want to bring down the whole server by misusing the nonProxy pattern
            //therefore the error is logged and the web client moves on.
        } catch (Exception e) {
            log
                    .error("Creating the nonProxyHosts pattern failed for http.nonProxyHosts="
                            + nonProxyHosts
                            + " with the following exception: "
                            + e);
            return null;
        }
    }

here获取完整的信息/代码 通过这种方式,您可以获得一个非代理模式。对于两个,您必须将函数的返回类型更改为TRUE/FALSE,然后它才会正常。