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