笔记

笔记

这以前总是有效的,所以我不确定为什么它现在不起作用了。

设想

我在一个文件夹中完成了一些工作,我想让其他用户查看。当他们访问它时,他们的用户名/密码组合有效,但每当他们导航到其他页面时,他们都会再次收到登录提示。然而,当他们使用我的帐户时,它按预期工作。

问题

这是怎么回事?我该如何解决?我尝试了很多次,但都没有成功。

笔记

  • 我的用户是机器上的 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的上下文是相同的。由于服务器不需要提示您输入凭据,因此您的浏览器甚至不会注意到它现在处于不同的领域。

相关内容