URI サブセットに従ってユーザーを識別する必要があります。以下 の パターン が あ るhttp://userinfo@hostname:port/path
。
java.net.URI実装は 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();
}
}
前もって感謝します!