java - 带有 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)
解决方案
无法添加/编辑标头,但我们可以使用 httpExchange.setAttribute() 和 httpExchange.getAttribute() 方法在过滤器之间跳转时传递附加信息。
为了向我们想要转发到服务的请求添加标头,我们从原始请求创建一个新的 http 请求并在标头中包含属性
推荐阅读
- javascript - 迭代添加 addEventListener
- python - 使用不同公司的常见问题数据构建一个常见问题聊天机器人
- c# - Html 字体大小默认为 36
- php - PHP - 在生产服务器上随机触发内存耗尽错误
- python - 获取 IndexError:在 bigquery 中加载文件时字符串索引超出范围
- php - PDO 为多个 INSERT 语句从数组和单个值绑定生成占位符
- javascript - 修改后的光标“滞后”
- python - 如何解决轴 0 的错误索引超出范围?
- visual-studio-2019 - 阻止 Visual Studio 2019 在项目文件夹中自动添加文件
- r - 在 R 中生成大量特定变量的人口统计表/频率