这以前总是有效的,所以我不确定为什么它现在不起作用了。
设想
我在一个文件夹中完成了一些工作,我想让其他用户查看。当他们访问它时,他们的用户名/密码组合有效,但每当他们导航到其他页面时,他们都会再次收到登录提示。然而,当他们使用我的帐户时,它按预期工作。
问题
这是怎么回事?我该如何解决?我尝试了很多次,但都没有成功。
笔记
- 我的用户是机器上的 Linux 用户
- 他们的用户是具有 (SHA) htpasswd 记录的 htaccess 用户
- 直到最近才开始发生这种情况(我不知道有任何服务器更新)
- 我已尝试过从多个浏览器、多个操作系统、多个 IP 执行此操作
.htaccess
AuthUserFile /var/www/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user jackson david
Order Deny,Allow
Deny from All
# jackson home
Allow from xx.xx.xx.219
Satisfy Any
服务器信息
$ apache -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 15 2016 15:34:04
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
答案1
基本身份验证要求浏览器发送您的凭据每个HTTP 请求,当您尝试在没有有效用户名/密码的情况下访问受密码保护的区域时,服务器将提示您输入这些内容。
基本身份验证也是范围有限 当您超出初始范围时,您的浏览器将停止在每次请求中发送您的已知凭据。
例如,给定一个经过身份验证的请求:
http://example.com/folder/docs/index.html
对以下 URI 的请求可以使用已知凭据:
http://example.com/folder/docs/
http://example.com/folder/docs/test.doc
http://example.com/folder/docs/?page=1
http://example.com/folder/docs/archive/1999/old.doc
而 URI
http://example.com/folder/other/
http://example.com/folder/
http://example.com/
https://example.com/folder/docs/
^
将被视为超出身份验证范围。如果这些位置中的一个或多个也受密码保护(例如使用不同的 .htaccess 文件),则服务器将需要提示您的浏览器再次提供凭据。
当域相同且 Web 服务器上两个区域的“realm”(AuthName
即 的值"Password Required"
)相同时,浏览器将首先尝试已知凭据。如果域不同,浏览器将不会使用已知凭据,但会向您显示登录提示。
使用嵌套身份验证和不同的“领域”值,但相同的有效用户名/密码组合(见下文),您将得到稍微违反直觉的行为,即您访问 URL 的顺序很重要
URL Authname Valid Users
http://example.com/folder "Private" jackson
http://example.com/folder/docs "Password Required" jackson david
首先将http://example.com/folder/docs
存储您的密码,但由于领域不同,当您离开原始环境时,系统会提示您输入密码http://example.com/folder
。
当您首次访问时,http://example.com/folder
您的凭据会被存储,当您再次访问时,凭据会自动发送,因为访问http://example.com/folder/docs
的上下文是相同的。由于服务器不需要提示您输入凭据,因此您的浏览器甚至不会注意到它现在处于不同的领域。