2016-08-16 47 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)中,我得到一個auth提示符,然後它按照預期工作。

您是否有任何想法如何調試Chrome中的特定行爲或確保第一個auth提示符將是唯一的?

注意:前端發送一些進一步的XHR呼叫到後端,這些呼叫還設置了「授權」標頭,以履行基本身份驗證而不顯示提示。

+1

您是否嘗試過檢查Chrome DevTools中的請求以查看Nginx是否正在返回401?如果確實返回了401響應,Chrome是否在該請求中發送了授權標頭? –

+0

也請查看[此答案](http://stackoverflow.com/a/35161885/282638)中的疑難解答步驟。 –

+0

您是否可以使用裸機確認相同的問題,並且沒有安裝擴展程序? – meta

回答

1

我懷疑這裏的問題是如何在本地存儲授權令牌以及它的有效時間。瀏覽器會相互處理本地存儲,因此如果您使用本地存儲或會話存儲,這可能僅僅是數據如何持續存在的差異。

我相信這SO後可能會幫助回答問題:How persistent is localStorage?

基本上Chrome可讓數據擁有一套超時週期,而在Firefox 「這是不可能指定任何的保質期你的數據「

如果您經常使用Chrome並因其他原因清除緩存,則可能還會清除自己的身份驗證令牌。如果您只使用Firefox進行測試,則可能有一個未過期的緩存身份驗證令牌。

+0

基本認證的用戶名和密碼是否存儲在瀏覽器本地或會話存儲中? –

+2

[This](http://stackoverflow.com/a/35161885/1744768)回答說它存儲在瀏覽器緩存中 –