AsyncServerRequestHandler 如何设置响应 headers?

How does an AsyncServerRequestHandler set response headers?

将 Apache httpcore 5 用于 java 时,AsyncServerRequestHandler 中的 handle() 方法如何将 headers 添加到响应中?

https://hc.apache.org/httpcomponents-core-5.0.x/examples.html such as https://hc.apache.org/httpcomponents-core-5.0.x/httpcore5-h2/examples/org/apache/hc/core5/http/examples/Http2FileServerExample.java 中有几个示例,但它们有些密集。

在旧的 httpcore <= 4 下你会做类似的事情

response.setHeader("Access-Control-Allow-Origin", "*")

但不清楚 httpcore 5 使用的许多间接层中哪一层是可以访问响应的层 headers,以及哪一层 object 具有与 setHeader 对应的方法。

您可以将 HttpResponse 传递给 BasicResponseProducer 的构造函数。

例如在Http2FileServerExample问题中:

responseTrigger.submitResponse(new BasicResponseProducer(
                HttpStatus.SC_OK, new FileEntityProducer(file, contentType)));

可以变成:

BasicHttpResponse response = new BasicHttpResponse(HttpStatus.SC_OK);
response.setHeader("Access-Control-Allow-Origin", "*");
responseTrigger.submitResponse(new BasicResponseProducer(
                response, new FileEntityProducer(file, contentType)));