gpt4 book ai didi

java - 在 Jersey 中为自己的服务编写代理/包装类

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:16 27 4
gpt4 key购买 nike

我想在运行基本 http 身份验证的情况下访问完整的休息服务。但是,当 wrong credential is provided 出现时,javascript 浏览器客户端无法抑制身份验证框。 .

我想过不同的方法来解决这个问题

  • 有人建议用过滤器删除 WWW-Authenticate Header(我不认为这是一个干净的方法)
  • 我可以重写我的应用程序以完全不使用 Basic Http Auth(我认为这太麻烦了)
  • 我可以编写一个与我的常规服务对话的代理

我最喜欢最后一种方法。我保留我的常规 Rest 接口(interface),但也可以选择将此接口(interface)用于不太灵活的客户端。此外,我以后可以代理某些浏览器不支持的 Http 请求。

想法是有一个/api/proxy/{request} 路径代理到/api/{request} 并返回一个类似 Facebook-Graph 的 JSON 查询 { data: {data}, error: {error}}

这是代理类的 stub

@Path("proxy")
public class ProxyResource {
@GET()
@Path("{url: [a-zA-Z/]*}")
public String get(@Context Request request, @PathParam("url") String url) {
// remove proxy/ from path
// resend request
// verify result
}

}我可以访问请求(这似乎是一个 ContainerRequest)。如何在不从头开始构建请求的情况下修改请求以重新发送。

编辑:当有人知道更好的方法时,我很高兴听到它。

最佳答案

当我开始深入研究这个问题时,我发现问题不是 401。从服务器发回的 www-authenticate header 导致浏览器打开登录框。

如果有人感兴趣,我已经编写了一个小的 nodejs 代理来从所有服务器请求中删除 www-authenticate。

https://gist.github.com/ebb9a5052575b0a3f41f

因为这不是我最初问题的答案,所以我将保持开放状态。

关于java - 在 Jersey 中为自己的服务编写代理/包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com