【问题标题】:Programmatically set Jetty configuration to increase allowed URL length以编程方式设置 Jetty 配置以增加允许的 URL 长度
【发布时间】:2015-10-25 20:37:14
【问题描述】:

我们使用嵌入式 Jetty 9.3.1.v20150714 并遇到了 problem,其中我们的长查询 URL 与其他标头相结合,超过了允许的长度。

solution 看起来很简单:在HttpConfiguration 中增加requestHeaderSize。但是我如何轻松做到这一点?我目前正在创建ServerServletContextHandlerServletHolder。但是要混合自定义HttpConfiguration,我是否必须创建一个新的ServerConnectorHttpConnectionFactory?我是否必须覆盖 HTTP 和 HTTPS 配置?如何在不重新配置所有默认值的情况下轻松更改 requestHeaderSize

【问题讨论】:

    标签: java url http-headers embedded-jetty httpconfiguration


    【解决方案1】:

    如果您只是设置一个属性,您可以在默认实例化的HttpConfiguration 上设置它:

    public static void main(String[] args) throws Exception {
        Server server = new Server(8080);
        server.setHandler(new DefaultHandler()); // 404s for everything except favicon.ico
    
        for (Connector c : server.getConnectors()) {
            c.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setRequestHeaderSize(65535);
        }
    
        server.start();
        server.join();
    }
    

    您不必单独覆盖 HTTPS 配置,因为根据您对当前实例化内容的描述,您没有任何 HTTPS 连接器。即使您确实有一个 HTTPS 连接器,上述循环也可以工作,因为为 HTTPS 配置的ServerConnector 仍然有一个关联的HttpConnectionFactory。您可以在 this example 中查看如何配置 HTTPS 连接器。

    但是,自己设置必要对象的代码并不多:

    public static void main(String[] args) throws Exception {
        Server server = new Server();
        server.setHandler(new DefaultHandler()); // 404s for everything except favicon.ico
    
        HttpConfiguration config = new HttpConfiguration();
        config.setRequestHeaderSize(65535);
        ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(config));
        http.setPort(8080);
        server.setConnectors(new Connector[] {http});
    
        server.start();
        server.join();
    }
    

    我建议您自己进行设置,因为如果您将来有其他配置更改,它会更容易维护。

    【讨论】:

    • 请务必注意,您必须在调用server.start() 之前设置该值 以使其始终如一地工作。
    • 感谢您在这方面的所有时间,heenenee。
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2020-01-03
    • 2011-04-06
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多