【发布时间】:2020-08-23 17:06:58
【问题描述】:
我正在创建一个简单而轻量级的反向 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)
【问题讨论】:
-
您不应将此软件包用于此目的。您不能使用 HTTP 服务器编写 HTTP 代理,至少不能正常执行。您需要在 TCP 级别编写并自己实现 HTTP 的必要部分。
-
@MarquisofLorne 所以目前我正在构建一个 MVP 并且不太关心性能。我设计它的方式是自定义过滤器位于单独的模块中,并且可以在任何其他项目中重复使用,因此用其他东西替换这个包对我来说将来不会有太大问题。除了性能之外,您还有什么其他原因建议我在 TCP 级别实现它?