在将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对应的方法。
答案 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)));