为什么Chrome有时会第二次要求基本身份验证而Firefox却没有?

时间:2016-08-16 10:02:12

标签: google-chrome authorization

我正在基本身份验证后面的Nginx服务器(宅基地Vagrant盒子)上运行React前端和Laravel后端,Nginx配置如下:

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中的特定行为或确保第一个身份验证提示是唯一的?

注意:前端会向后端发送一些XHR调用,这些调用还设置了“授权”标头以完成基本身份验证而不显示提示。

1 个答案:

答案 0 :(得分:1)

我怀疑这里的问题在于您如何在本地存储授权令牌以及它有效的时间量。浏览器将处理本地存储的方式略有不同,因此如果您使用本地存储或会话存储,则数据的持久性可能会有所不同。

我相信这篇SO帖子可能有助于回答这个问题:How persistent is localStorage?

基本上,Chrome允许数据在Firefox &#34中设置超时时间;无法为任何数据指定过期时间

如果您经常使用Chrome并因其他原因清除缓存,则可能还会清除身份验证令牌。如果您仅使用Firefox进行测试,则可能有一个缓存的身份验证令牌未过期。