使用Jetty增加限制:URI太大> 8192

时间:2017-02-20 08:56:26

标签: java eclipse jetty jax-rs

我正在使用命令java -jar ws.jar运行Java Web服务(JAX-RS)。该应用程序基于Eclipse构建。

当我收到GET请求时,收到以下错误:

org.eclipse.jetty.http.HttpParser - URI is too large >8192

我尝试更改取消注释并添加" 0"在这些行的末尾/opt/jett/start.ini,但我得到同样的错误。

## Max response content write length that is buffered (in bytes)
jetty.httpConfig.outputAggregationSize=81920

## Max request headers size (in bytes)
jetty.httpConfig.requestHeaderSize=81920

## Max response headers size (in bytes)
jetty.httpConfig.responseHeaderSize=81920

我知道增加URI大小的风险,但我确实需要进行研究测试。

1 个答案:

答案 0 :(得分:0)

当您尝试使用参数太大的 HTTP POST 请求时,也会出现此问题,因此 URI 变得太大。这是因为参数被附加到 URI 中,就像在 GET 请求中一样。简单的方法是使用多部分 API,如下代码中所述:

    @PostMapping(value = "/video", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
    public ResponseEntity<IngestionResponseDTO> ingestVideo(@RequestPart("file") MultipartFile file, @RequestPart("jsonMetadata") String videoIngestionDTO){...}

上传带有请求体的文件的Python代码如下:

        with open(filepath, 'rb') as file:
        files = {'file': file, 'jsonMetadata': json.dumps(body_data)}
        response = requests.post(
            f"http://{self.upload_host}:{self.upload_port}/upload",
            headers=headers, files=files)