我希望使用基本的http auth运行来访问完整的休息服务。 但是,当wrong credential is provided时,javascript浏览器客户端无法禁止身份验证框。
我想到了解决这个问题的不同方法
我最喜欢最后一种方法。 我保留了常规的Rest Interface,但也可以选择将此接口用于不那么灵活的客户端。 此外,我稍后可以代理某些浏览器不支持的Http请求。
我们的想法是拥有代表/ api / {request}的/ api / proxy / {request}路径并返回类似Facebook-Graph的JSON查询{data:{data},error:{error}}
这是Proxy类的存根
@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
}
} 我可以访问Request(它似乎是一个ContainerRequest)。如何修改请求而不从头开始构建它以重新发送它。
编辑:当有人知道更好的方法时,我很高兴听到它。
答案 0 :(得分:1)
当我开始深入研究这个时,我发现不是401就是问题。从服务器发回的www-authenticate标头导致浏览器打开登录框。
如果有人感兴趣我已经编写了一个小的nodejs代理来从所有服务器请求中删除www-authenticate。
https://gist.github.com/ebb9a5052575b0a3f41f
由于这不是我原来问题的答案,我将把它打开。