URIサブセットに従ってユーザーを識別する必要があります。それは次のパターンhttp://[email protected]:port/pathを持っています。URI userinfoコンポーネントを使用した認証http:// userinfo @ hostname:サーブレット内のポート/パス
java.net.URI(http://java.sun.com/j2se/1.4.2/docs/api/java/net/URI.html)の実装はURIを表します。しかし、サーブレットでは、 "userinfo" URIのコンポーネントを含むURL/URIを取得することができませんでした。私はメソッドHttpServletRequest.getRequestURL()が完全なURLを返すと思ったが、 "userinfo"コンポーネントが抑制されているか無視されている段階がありました。
Firefoxの代わりにcurlを使用してサーブレットをリクエストすると、ヘッダにhttp基本認証が追加されることに気付きました。したがって、HTTPクライアントの実装に関連する可能性がありますか?呼び出し側は "user-info"コンポーネントを抑制できますか?
次のコードは、ヘッダーを繰り返して、ユーザー情報コンポーネントを読み取ろうとしています。
@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();
}
}
ありがとうございます!