Я использую angular2-rc4 с пружинным упором. Я использую Spring-аутентификацию.
Spring-аутентификация ожидает, что Content-Type будет application/x-www-form-urlencoded; charset=UTF-8 и размещать данные в формате простой строки, например "j_username=user&j_password=pass".
Поэтому я написал следующий код:
let data = 'j_username=user&j_password=password'; //Spring authentication expects data in this format.
let headers = new Headers({'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'});
let options = new RequestOptions({headers: headers});
this.http.post(url, data, options).subscribe(
.....
....
);
Когда я запускаю этот код через firefox, он проходит без проблем. Данные поступают на сервер, и аутентификация работает нормально.
Но когда я делаю это из Chrome, это не работает. Имя пользователя и пароль достигают сервера с пустыми значениями.
Я сравнил заголовок запроса Chrome и Firefox с помощью firebug. Я заметил одно отличие. Content-Type работает правильно в Firefox, но не в Chrome. Ниже приведен тип содержимого Chrome и Firefox:
Firefox: Content-type: application/x-www-form-urlencoded; charset=UTF-8
Chrome : Тип содержимого: test/plain, application/x-www-form-urlencoded; кодировка = UTF-8
Если вы видите, что Chrome автоматически добавляет text/plain к своему заголовку. Я не понимаю причину этого.
Примечание. Этот код работал с angular2-rc1. Проблема возникла после обновления до rc4.
Пожалуйста, помогите
Спасибо.