2

抱歉,如果这应该在 ServerFault 上,请在必要时移动/投票以移动。

我遇到了一个.htpasswd文件问题

  • 访问页面通常会按预期请求用户名和密码

    然后,我可以按预期浏览站点并浏览页面,而无需在每次页面加载时都请求身份验证。

  • 使用相同协议但使用 AJAX 访问同一服务器、相同基本 URL 上的页面会重新请求身份验证。

    如果我随后进行身份验证,则 AJAX 请求成功,但主浏览器窗口上的身份验证不再有效,因此下一次刷新请求身份验证。

这只发生在服务器上许多虚拟主机中的一个虚拟主机上,所有这些虚拟主机都使用相同的.htpasswd文件。身份验证请求位于全局 Apache 配置文件中,而不是特定于虚拟主机。

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All

    Order allow,deny
    Allow from all

    AuthUserFile /var/www/private/.htpasswd
    AuthGroupFile /dev/null
    AuthName "My Private Directory"
    AuthType Basic
    <Limit GET POST>
        require valid-user
    </Limit>
</Directory>

.htaccess唯一不起作用的虚拟主机中的文件如下。没有什么特别的,应该会影响它。

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_URI} !.*\.(gif|png|jpe?g|ico|swf)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?/=$1 [L,QSA] 
</IfModule>

因此,我的问题是为什么 AJAX 请求需要用户再次进行身份验证?

4

0 回答 0