Как уже предлагали другие, вы можете установить имя пользователя и пароль непосредственно в вызове Ajax:
$.ajax({
username: username,
password: password,
// ... other parameters.
});
ИЛИ использовать свойство headers, если вы не хотите хранить свои учетные данные впростой текст:
$.ajax({
headers: {"Authorization": "Basic xxxx"},
// ... other parameters.
});
Независимо от способа отправки, сервер должен быть очень вежливым.Для Apache ваш файл .htaccess должен выглядеть примерно так:
<LimitExcept OPTIONS>
AuthUserFile /path/to/.htpasswd
AuthType Basic
AuthName "Whatever"
Require valid-user
</LimitExcept>
Header always set Access-Control-Allow-Headers Authorization
Header always set Access-Control-Allow-Credentials true
SetEnvIf Origin "^(.*?)$" origin_is=$0
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is
Объяснение:
Для некоторых междоменных запросов браузер отправляет предварительный запрос OPTIONS , которыйотсутствуют ваши заголовки аутентификации.Оберните ваши директивы аутентификации внутри тега LimitExcept , чтобы правильно ответить на предпечатную проверку.
Затем отправьте несколько заголовков, чтобы сообщить браузеру, что разрешена аутентификация, и Access-Control-Allow-Origin для предоставления разрешения для межсайтового запроса.
В некоторых случаях подстановочный знак * не работает в качестве значения для Access-Control-Allow-Происхождение: вам нужно вернуть точный домен вызываемого.Используйте SetEnvIf для захвата этого значения.