0

javax.servlet.http.HttpServletRequest オブジェクトを使用して、次の URL からコントローラーでクエリ文字列パラメーターを取得しようとしています。

http://example.com:8080/OAuthClient/oauth-callback#access_token=something&expires_in=1209600&username=abcuser

? ではなく # で区切られているため動作しません。

したがって、リクエストをhttp://example.com:8080/OAuthClient/oauth-callback?access_token=something&expires_in=1209600&username=abcuserに変更すると機能します

この問題を回避する方法はありますか? # 区切りのクエリ パラメータで動作させる必要があります。oauth-callback の後にデータを含むプロパティはどれですか?

4

1 に答える 1

2

これらはクエリ パラメータではありません。それらは URI のフラグメントであり、サーバーにはまったく送信されません。クライアント側でのみ使用できます。

RFC 3986から:

フラグメント識別子コンポーネントは、番号記号 (「#」) 文字の存在によって示され、URI の末尾で終了します。

...そして(私の強調)

フラグメント識別子は、クライアント側の間接参照の主要な形式として、情報検索システムで特別な役割を果たします。これにより、作成者は、リソース所有者によって間接的にのみ提供される既存のリソースの側面を具体的に識別することができます。 そのため、フラグメント識別子はURIのスキーム固有の処理では使用されません。代わりに、フラグメント識別子は逆参照の前に残りの URI から分離されるため、URI スキームに関係なく、フラグメント自体の識別情報はユーザー エージェントによってのみ逆参照されます。

于 2014-12-30T19:50:58.757 に答える