【问题标题】:Basic auth across multiple directories跨多个目录的基本身份验证
【发布时间】:2015-08-10 16:43:58
【问题描述】:

我有一个网站,我正在使用 Apache 进行身份验证(使用基本身份验证进行测试)。它适用于所有浏览器。现在,我尝试将网站使用的 API 添加到身份验证领域(使用相同的 AuthName),并注意到以下行为:

在 Safari 上,它会进行两次身份验证,一次是在访问网站时,另一次是在调用 API 时。 (我宁愿只在第一次进行身份验证。)

在 Chrome 和 Firefox 上,当我第一次访问网站时它会进行身份验证,但是当网站进行 API 调用时它会返回 401 错误。

这些都在同一个域/端口上,所以我不认为这是一个 CORS 问题(特别是因为当我删除 API 的身份验证要求时这有效,然后它没有被锁定,因此是不可取的) .我确实有相同的 AuthName,FWIW,但这似乎没有效果。

我在 httpd.conf 中的 API 配置是:

WSGIDaemonProcess rest_api user=gms  threads=5
WSGIScriptAlias /api /var/www/extjs/rest_api/rest_api.wsgi

<Location /api>
    Options +FollowSymLinks +Multiviews +Indexes
    AllowOverride None
    Order allow,deny
    Deny from all
    AuthType basic
    Satisfy Any
    AuthName "PrivateRepository"
    AuthUserFile /var/www/extjs/.htpasswd
    Require valid-user
</Location>

虽然网站是:

<VirtualHost *:80>
    ServerName cardiocatalogqt
    Alias /cardiocatalogqt /var/www/extjs/cardiocatalogqt

    <Location /cardiocatalogqt>
        Options +FollowSymLinks +Multiviews +Indexes
        AllowOverride None
        Order allow,deny
        Deny from all
        AuthType basic
        Satisfy Any
        AuthName "PrivateRepository"
        AuthUserFile /var/www/extjs/.htpasswd
        Require valid-user
    </Location>
</VirtualHost>

【问题讨论】:

    标签: apache basic-authentication


    【解决方案1】:

    如果您希望浏览器先发制人地发送基本身份验证凭据,则需要重新排列 URL,以便它们具有公共前缀。

    【讨论】:

    • 完美!像魅力一样工作。 (我将服务器名称作为 IP 别名,API 调用使用实际主机名,这就是为什么我在 Firefox 和 Chrome 中收到 CORS 错误...)
    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多