【发布时间】:2025-12-04 09:20:04
【问题描述】:
我正在使用 SpringBoot、Jetty 和 kotlin 创建一个代理微服务。
这个微服务的目的是将我的前端应用程序发出的请求转发给外部服务(避免 CORS),并在检查一些自定义身份验证后发回响应。我将收到的查询将在标题中包含目标的 URL(即:Target-Url: http://domain.api/getmodel)。
基于this answer,我做了一个扩展AsyncProxyServlet的类并覆盖了sendProxyRequest的方法:
class ProxyServlet : AsyncProxyServlet() {
private companion object {
const val TARGET_URL = "Target-Url"
}
override fun sendProxyRequest(clientRequest: HttpServletRequest, proxyResponse: HttpServletResponse, proxyRequest: Request) {
// authentication logic
val targetUrl = clientRequest.getHeader(TARGET_URL)
if (authSuccess) {
super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest)
} else {
proxyResponse.status = HttpStatus.UNAUTHORIZED.value()
}
}
}
当我查询我的代理时,我进入此方法并成功验证,但我不明白如何使用我的 targetUrl 来重定向请求。
该方法在将原始请求重定向到自身时不断调用自身(从http://myproxy:port/ 到http://myproxy:port/ 的请求)。
这个jetty的具体实现很难找到文档,*是我最后的选择!
【问题讨论】:
标签: spring-boot proxy kotlin jetty