AsyncServerRequestHandler如何设置响应头?

时间:2018-06-25 20:25:16

标签: java http2

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

https://hc.apache.org/httpcomponents-core-5.0.x/examples.html上有几个示例,例如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使用的间接寻址的许多层中的哪一层是有权访问响应头的层,以及哪个对象具有与setHeader对应的方法。

1 个答案:

答案 0 :(得分:1)

您可以将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)));