2015-08-10 2 views
0

У меня есть веб-сайт, на котором я использую Apache для аутентификации (используя базовый auth для тестирования). Он отлично работает во всех браузерах. Теперь я пытаюсь добавить API, который веб-сайт использует для области аутентификации (с использованием того же AuthName), и замечает следующие варианты поведения:Базовый auth через несколько каталогов

В Safari он проходит аутентификацию дважды, один раз при посещении веб-сайта и затем снова, когда он вызывает вызов API. (Я бы предпочел, чтобы мне приходилось только проверять подлинность в первый раз.)

Как в Chrome, так и в Firefox он аутентифицируется, когда я впервые перехожу на веб-сайт, но затем он возвращает ошибку 401, когда веб-сайт вызывает вызов API.

Все они находятся в одном домене/порте, поэтому я не вижу в этом проблемы CORS (тем более, что это работает, когда я удаляю требование аутентификации для API, которое затем не блокируется и, следовательно, нежелательно). У меня есть то же AuthName, FWIW, но это, похоже, не имеет никакого эффекта.

Мой API конфигурации в httpd.conf является:

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> 

ответ

1

Вам нужно переставить URL, поэтому они имеют общий префикс, если вы хотите браузерам, чтобы предварительно отправить базовые учетные данные.

+0

Отлично! Работал как шарм. (У меня было имя моего сервера как псевдоним IP и вызов API с использованием фактического имени хоста, поэтому я получал ошибку CORS в Firefox и Chrome ...) –

Смежные вопросы