加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 以编程方式设置Jetty配置以增加允许的URL长度

发布时间:2020-12-14 06:04:38 所属栏目:Java 来源:网络整理
导读:我们正在使用嵌入式Jetty 9.3.1.v20150714并进入 problem,其中我们的长查询URL与其他标头一起比允许的长. solution似乎很简单:在HttpConfiguration中增加requestHeaderSize.但是我该如何轻松地做到这一点?我目前正在创建一个Server,一个ServletContextHand
我们正在使用嵌入式Jetty 9.3.1.v20150714并进入 problem,其中我们的长查询URL与其他标头一起比允许的长.

solution似乎很简单:在HttpConfiguration中增加requestHeaderSize.但是我该如何轻松地做到这一点?我目前正在创建一个Server,一个ServletContextHandler和一个ServletHolder.但要混合自定义HttpConfiguration,我是否必须创建一个新的ServerConnector和HttpConnectionFactory?我是否必须覆盖HTTP和HTTPS配置?如何在不重新配置所有默认值的情况下轻松更改requestHeaderSize?

解决方法

如果您只是设置一个属性,则可以在默认情况下实例化的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();
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读