2

GET メソッドを介して j_spring_security_check にリクエストが行われるという奇妙な問題が繰り返し発生します。私のログインフォームはすべて、ログイン資格情報を投稿するために POST to j_spring_security チェックを使用します。それでも、アプリケーション ユーザーは、ログインしようとするとエラー ページが表示されることがあると何度か報告しています。ログでこれらの状況を追跡したところ、ユーザーがログイン ページにアクセスし、次のリクエストが j_spring_security_check への GET であることがわかりました。

私も一度発生しましたが、再現できません。

なぜこれが起こるのか、何か考えはありますか?spring security は、何らかの理由で j_spring_security にリダイレクトできますか? 私はhtmlとjavascriptを再確認しましたが、メソッドがPOSTとして設定されているフォーム要素のアクションフィールドを除いて、j_spring_security_checkの言及はありません。

ヘルプやアイデアをいただければ幸いです。

編集: 追加情報: WebApp は Tomcat によって提供されます。その前に Apache リバース プロキシがあります。ログイン フォームを含むページは w3c 検証に合格します。

4

1 に答える 1

2

ほぼ 1 か月後、Google Chrome でこの問題が発生する理由がようやくわかりました。どうやら、SHIFT+ENTER を使用してフォームを送信すると、Chrome は新しいウィンドウを開き、POST リクエストではなく GET リクエストを行うようです。一部のユーザーはパスワードの最後の文字として大文字/特殊文字を使用しているため、Shift キーを押しながら最後の文字を入力し、Shift キーを離さずに Enter キーを押してログインします。そしてその結果がj_spring_securityチェックへのGETリクエストです。これを修正するには、javascript で shift + enter をインターセプトします。

于 2013-08-29T09:36:02.923 に答える