首页 > 解决方案 > 带有 com.sun.net.httpserver.httpserver 的可修改请求标头

问题描述

我正在创建一个简单而轻量级的反向 HTTP 代理,并为其使用com.sun.net.httpserver.httpserver

一旦代理完成其工作,它应该在请求标头中添加一些标头并将请求转发到实际服务,但是当我在请求标头中添加任何内容时,我得到 UnsupportedOperationException 因为它正在使用UnmodifiableHeaders

有人可以告诉我如何配置 com.sun.net.httpserver.httpserver 以使用可修改的标头吗?

或者有没有其他更好但超轻量级的 HTTP 服务器支持这个?

java.lang.UnsupportedOperationException: unsupported operation
    at jdk.httpserver/sun.net.httpserver.UnmodifiableHeaders.add(UnmodifiableHeaders.java:65)
    at com.example.SampleFilter.lambda$addValuesInRequestHeader$1(SampleFilter.java:80)

标签: javahttpservletsserver

解决方案


无法添加/编辑标头,但我们可以使用 httpExchange.setAttribute() 和 httpExchange.getAttribute() 方法在过滤器之间跳转时传递附加信息。

为了向我们想要转发到服务的请求添加标头,我们从原始请求创建一个新的 http 请求并在标头中包含属性


推荐阅读