2016-08-16 1 views
7

私は基本的な認証の背後にnginxのサーバー(家産ベイグラントボックス)上で反応フロントエンドとLaravelのバックエンドを実行しています、そのためのnginxの構成は次のようになります。Chromeは時には基本認証をもう一度要求し、Firefoxはなぜ尋ねないのですか?

server { 
    ... 
    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
     auth_basic    "Restricted"; 
     auth_basic_user_file /home/vagrant/Code/project/.htpasswd; 
    } 
} 

これは、基本的には(すべての権利およびChromeを実行していますv52、Mac OS X)「時々」後続のリクエストでauthをもう一度要求します。たとえば、ボタンホバーにcss-backgroundとして定義されているイメージをロードすることです。この振る舞い(これまでの私の研究では少なくとも)は一貫性がなく、定期的にそれを再現することはできません。それは時々発生し、その後の認証要求の理由を見つけることができません。

Firefox(v47.0、Max OS X)では、1つの認証プロンプトが表示され、次に期待どおりに動作しています。

Chromeで特定の動作をデバッグする方法や、最初の認証プロンプトが唯一のものであることを確認する方法はありますか?

注:フロントエンドは、プロンプトを表示せずに基本認証を実行するように設定された "authorization"ヘッダーも持つ、バックエンドへのXHR呼び出しをいくつか送信します。

+1

Nginxが401を返しているかどうかを確認するために、Chrome DevToolsでリクエストを調べてみましたか? 401レスポンスが返された場合、ChromeはそのリクエストにAuthorizationヘッダーを送信しましたか? –

+0

[この回答](http://stackoverflow.com/a/35161885/282638)のトラブルシューティング手順も確認してください。 –

+0

拡張機能をインストールしていない裸のクロームで同じ問題を確認できますか? – meta

答えて

1

ここでは、認証トークンをローカルに格納する方法と、それが有効な時間の長さに問題があると思われます。ブラウザーはローカル記憶域を互いに少しずつ扱いますので、ローカル記憶域またはセッション記憶域を使用している場合は、単にデータがどのように永続化されるかが異なります。

私はこのSOポストはおそらく、質問に答えるに役立つだろうと信じて:How persistent is localStorage?

Firefoxのに「のいずれかの有効期限を指定することはできませんが、基本的にChromeはデータが設定されたタイムアウト時間を持つことができますあなたのデータ "

Chromeを頻繁に使用していて、他の理由でキャッシュをクリアしている場合は、認証トークンもクリアされている可能性があります。テストにFirefoxを使用しているだけの場合は、キャッシュされた認証トークンが期限切れになっている可能性があります。

+0

基本認証のユーザ名とパスワードは、ブラウザのローカルストレージまたはセッションストレージに保存されていますか? –

+2

[This(http://stackoverflow.com/a/35161885/1744768)回答は、ブラウザのキャッシュに格納されている –

関連する問題