2011-08-05 5 views
10

私はウェブサイトのログインシステムを書いていますが、ユーザーがブラウザのログイン情報を間違って取得したとき(私はFirefoxとChrome )は、ユーザーがパスワードを保存したいかどうかを依頼します。ログインの失敗があったことをブラウザに伝えるにはどうすればよいのですか?ログインが失敗したので、パスワードを覚えていないので、

通常の200ではなく、403と500のHTTPステータスコードを送信しようとしましたが、いずれも動作しません。私がしたいことをする方法はありますか?

P.S. HTMLフォームを使用してログインするときにHTTP 401認証メカニズムを使用するのではなく、一部のブラウザのダイアログボックスでは使用しません。

+0

奇妙なことに、私はChromeが実際にダイアログを表示するために2XX応答を期待していると思っていました。 –

+0

代わりに "ブラウザメーカー"に伝えるべきだと思います! :) – Mohsen

答えて

9

を見て、これがどのように機能するかを調べるには(OnPasswordFormsRenderedを参照)、これを判断するためのヒューリスティックを行っています。それはこれをやっているように見える方法です:?

  1. ユーザーは
  2. のロードが終了するページのフォーム
  3. 待ちが見えると同じ形式です提出しますかはいの場合、無効なユーザー名またはパスワードのためにフォームが提示されていると仮定します。

ユーザーのログオンに失敗した場合。彼らは再び同じ形式で提示されるべきです。 「ログオンに失敗しました」画面が元のログオン画面と大きく異なるため、ブラウザが同じ形式であることがわかります。

HTTPステータスコードがパスワードの保存のために違いを生じさせるようではありません。

新しいバージョンのChrome take in to account HTTPステータスコード。ステータスコードが400〜600の場合、パスワードを保存することはできません。

その他の詳細については、同じソースファイルにコメントが記載されています。

+2

ニートIE10以下にはこのようなヒューリスティックはありません。 – EricLaw

+0

@EricLaw:IEのしくみを知りたいのですが、しかし、私はそれをどこからでも見つけることができません;-)。 – vcsjones

-1

「401禁止に似ていますが、特に認証が可能だが失敗しているか、まだ提供されていない場合に使用する」というhttp:401は無許可で試してください。 (ウィキペディア引用)。

EDIT:申し訳ありません。あなたの質問を十分に読まなかった。

+0

10.4.2 401無許可 要求にはユーザー認証が必要です。応答**には、要求されたリソースに適用可能なチャレンジを含むWWW-Authenticateヘッダーフィールド**(セクション14.47)が含まれなくてはなりません(MUST)。 –