API Angular-Cli с базовой аутентификацией на том же хосте не удается

Я ужасно разбираюсь в этом. У меня есть API, предоставленный через PHP-CRUD-API, на том же хосте как статический контент мой Угловой-CLI основанный проект размещен и обслуживается

Я добавил следующее в файл htaccess, как было рекомендовано в другом месте …

# Allow CORS to all clients (client side Angular, and mobile iPad app, etc)
Header always set Access-Control-Allow-Origin "*"Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"Header always set Access-Control-Max-Age "1000"Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
# Respond to preflight requests with a SUCCESS/200 to allow clients to [http verb]
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

Я звоню в API таким образом …

getAuthHeader(): Headers {
const usr = '{actual username}';
const pwd = '{actual password}';
const key = usr + ':' + pwd;
const enc = btoa(key);

const headers = new Headers();
headers.append('Authorization', 'Basic ' + enc);
headers.append('Content-Type', 'application/x-www-form-urlencoded');

return headers;
}

getPreconfiguredOptions(): RequestOptions {
const opts = new RequestOptions();
opts.headers = this.getAuthHeader();
opts.withCredentials = true;
return opts;
}


create(aRecord: any): Promise<number> {
const opts = this.getPreconfiguredOptions();
return this.http
.post(this.apiUrl, JSON.stringify(aRecord), opts)
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}

Все это, как говорится, при настройке нашего живого API, «предполетной» ОПЦИИ запросы возвращают 401, вызывая сбой операции.

Я могу войти в тот же самый URL-адрес через Firefox напрямую, и базовая аутентификация завершается успешно (с использованием того же имени пользователя и пароля)!

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

Пока я знаю о доступных решениях, связанных с @Injectable и Interceptor (как уже упоминалось Вот) тот факт, что я могу видеть правильные значения на самом деле, указывает мне, что это не проблема / решение.

Некоторые вопросы / ответы указывают на необходимость дальнейших изменений на стороне сервера (таких как Вот а также Вот), но я не знаю, что больше, чем конфигурация, которую я предоставил выше, возможно потребовалась / была предоставлена, поскольку это просто сервер AWS EC Apache?

Существует также этот реддит пост на предмет, но решением их проблемы было расширение, которое вызывало проблему. Я использую userDataDir в VS Code launch.json файл как описано Вот, так что нет никаких существующих расширений / etc, даже присутствующих / загруженных.

Я добавил withCredentials: true установка на RequestOptions объект (показанный в предоставленном коде) как описано Вот, но это никак не повлияло на проблему.

Прямо сейчас я пробираюсь сквозь жестокий процесс анализа двух файлов HAR (один «хороший», один «плохой») и зачищаю их, используя JQ чтобы попытаться получить их в формате, который я могу сравнивать / различать легче.

Что мне не хватает ?! Помогите!

PS: На фальшивом сервере я вижу, что заголовок «Авторизация» нормализуется в соответствии со спецификацией в нижний регистр («авторизация») на фальшивом сервере. Я думаю, что я видел в журналах Apache, что он все еще был в верхнем регистре (не видел его в настоящее время и просто попытался нажать его и не видел информацию заголовка ни от одного /var/log/apache2/error.log или же /var/log/apache2/access.log, но видел 401-е.)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]