«Отказано в установке небезопасного заголовка« Cookie »» при отправке файлов cookie с запросом GET в угловом формате 6 - PullRequest
0 голосов
/ 06 января 2019

Я использую Spring Security с Angular 6. При входе в систему с использованием обычного сервера аутентификации отправляет cookie JessionID с ответом. Я хочу отправить этот файл cookie с другим запросом для аутентификации, но он выдает ошибку Refused to set unsafe header 'Cookie'. Когда я получаю одинаковую конечную точку от почтальона с тем же файлом cookie в заголовке, это работает.

Ниже приведен метод на угловом:

Примечание : В настоящее время я вручную добавляю его с заголовками.

private heroesUrl = 'http://localhost:8080/hi';
     header = new HttpHeaders().set("Cookie", "JSESSIONID=A2A75EC9A3E1172D60060C6E708549B5");
    getMessage() :Observable<Message>{
      return this.http.get<Message>(this.heroesUrl,{headers:this.header});
    }

Ответ, который я получаю при входе в систему с использованием обычной аутентификации

Response which i get when i login using basic Auth

1 Ответ

0 голосов
/ 06 января 2019

Вы не можете сделать это , потому что браузер не позволяет вам сделать это. Позвольте мне описать проблему здесь:

Вы заметили Set-Cookie: JSESSIONID=......; Path=/; HttpOnly в заголовках ваших ответов? Ну, проблема в флаге HttpOnly . На самом деле :) это не проблема, это функция предотвращения атак, направленных на кражу файлов cookie вашего браузера:

HttpOnly - это флаг, добавляемый в файлы cookie, который сообщает браузеру, чтобы он не отображал файлы cookie через скрипты на стороне клиента (document.cookie и другие). ... Когда вы устанавливаете cookie с флагом HttpOnly, он сообщает браузеру, что этот специальный cookie должен быть доступен только серверу

Таким образом, браузер не разрешает JavaScript-коду обращаться к этой переменной. Если бы вы могли изменить это значение, то это больше не файл cookie, помеченный HttpOnly:)

Если вы хотите отправить этот файл cookie через javascript, вам следует отправить его, например, через заголовок Authorization и написать промежуточное программное обеспечение на сервере Java, чтобы оно захватывало эти значения из заголовка Authorization и воспринимало их как файл cookie JSESSIONID. Больше вариантов для вас нет:)

...