gpt4 book ai didi

java - 使用 URI userinfo 组件进行身份验证 http ://userinfo@hostname:port/path in a servlet

转载 作者:行者123 更新时间:2023-11-30 12:01:21 27 4
gpt4 key购买 nike

我需要根据 URI 子集来识别用户。它具有以下模式 http://userinfo@hostname:port/path

java.net.URI implementation 表示 URI。但是,在 servlet 中,我无法检索包含“userinfo”URI 组件的 URL/URI。我认为 HttpServletRequest.getRequestURL() 方法会返回完整的 URL,但在某个阶段,“userinfo”组件被抑制或忽略。

我意识到,当使用 curl 而不是 Firefox 请求 servlet 时,它会向 header 添加 http 基本授权。那么,它可能与 HTTP 客户端实现有关吗?调用者可以抑制“用户信息”组件吗?

以下代码只是遍历 header 并尝试读取用户信息组件。

@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
try {

PrintWriter out = response.getWriter();

String header;
for (Enumeration e = request.getHeaderNames(); e.hasMoreElements();) {
header = e.nextElement().toString();
out.println(header + ": " + request.getHeader(header));
}

URI uri = new URI(request.getRequestURL().toString());

out.println("request uri: " + request.getRequestURI());
out.println("request url: " + request.getRequestURL());
out.println("userinfo: " + uri.getUserInfo());
} catch (URISyntaxException e) {
e.printStackTrace();
}

}

提前致谢!

最佳答案

用户名和密码作为 HTTP 身份验证的一部分传递,而不是 URL 的一部分。特别是,浏览器永远不会发送它,除非通过 401 未授权响应要求它发送。

您可以在此处查看有关如何在 servlet 中实现 HTTP 身份验证的一些示例:http://docstore.mik.ua/orelly/java-ent/servlet/ch08_01.htm

关于java - 使用 URI userinfo 组件进行身份验证 http ://userinfo@hostname:port/path in a servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828076/

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