Я хочу использовать XHR для входа на сайт, использующий базовую аутентификацию HTTP. Следующая часть делает это.
http = new XMLHttpRequest();
http.open("get", "http://...", false, username, password);
http.send("");
Проблема в том, что этот не работает из домена, отличного от того, где находится аутентификация. Решение достаточно простое: установите заголовок Access-Control-Allow-Origin на *. Поэтому я изменил свою конфигурацию Apache на это:
<Location />
Header set Access-Control-Allow-Origin "*"
AuthType Basic
AuthName "trac"
AuthUserFile /home/admin/development/pass.htpasswd
Require valid-user
</Location>
Ответы с этой страницы выглядят так:
HTTP/1.1 401 Authorization Required
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 345
Content-Type: text/html; charset=iso-8859-1
Date: Sun, 11 Sep 2011 01:17:55 GMT
Keep-Alive: timeout=15, max=100
Vary: Accept-Encoding
WWW-Authenticate: Basic realm="trac"
Ответы не имеют заголовка Access-Control-Allow-Origin. Это кажется странным.
Когда я использую одну и ту же директиву Header для внутренних страниц, заголовок устанавливается.
Почему не был установлен заголовок?
Как установить заголовок Access-Control-Allow-Origin для ответа базовой аутентификации HTTP в Apache?