Nano Hash - криптовалюты, майнинг, программирование

Как получить доступ к заголовкам из ответа HttpClient? (Угловой / Ионный)

Я использую конечную точку входа, которая возвращает токен носителя в качестве заголовка ответа, как я вижу в окне проверки Chrome «Сеть»:

Response Headers
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:8100
Authorization:Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJuZWxpby5jdXJzb3NAZ21haWwuY29tIiwiZXhwIjoxNTEyNzA3OTQ3fQ.pOR4WrqkaFXdwbeod1tNlDniFZXTeMXzKz9uU68rLXEWDAVRgWIphvx5F_VCsXDwimD8Q04JrxelkNgZMzBgXA
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Length:188
(etc...)

Однако, когда я пытаюсь распечатать «заголовки» из ответа, используя экземпляр HttpClient:

  authenticate(credentials) {
    let creds = JSON.stringify(credentials);
    let contentHeader = new HttpHeaders({"Content-Type": "application/json"});
    this.http.post(this.LOGIN_URL, creds, { headers: contentHeader, observe: 'response'})
      .subscribe(
        (resp) => {
          console.log("resp-ok");
          console.log(resp.headers);
        },
        (resp) => {
          console.log("resp-error");
          console.log(resp);
        }
      );
  }

Я получаю совершенно другую структуру:

HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
lazyInit : ƒ ()
lazyUpdate : null
normalizedNames : Map(0) {}

Я также попробовал метод get(headerName) и получил нуль. Что мне не хватает? Как я могу получить этот заголовок «Авторизация» из моего ответа?



Ответы:


1

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

public void methodJava(HttpServletResponse response){
  ...
 response.addHeader("access-control-expose-headers", "Authorization");
}

И тогда вы можете делать то, что пытались. Я думаю, что headers.get('Authorization') должен дать вам желаемое значение

07.12.2017
  • Просто интересно, почему это принятый ответ? Это java-код. 10.12.2017

  • 2

    попробуйте так:

    authenticate(credentials) {
        let creds = JSON.stringify(credentials);
        let contentHeader = new HttpHeaders({ "Content-Type": "application/json" });
        this.http.post(this.LOGIN_URL, creds, { headers: contentHeader, observe: 'response' })
            .subscribe(
            (resp) => {
                let header: HttpHeaders = resp.headers;
                console.log(header.get('Authorization'))
            },
            (resp) => {
                console.log("resp-error");
                console.log(resp);
            }
            );
    }
    
    07.12.2017
  • HttpHeaders, а не заголовки 07.12.2017
  • Тип, приведенный в HttpHeaders, работал у меня. Спасибо !! 23.02.2020

  • 3

    Вы почти там.

    Причина, по которой он не работает, заключается в том, что вы не использовали функцию .get файла headers.

    Изменить это

     console.log(resp.headers);
    

    К этому

     console.log(resp.headers.get('Authorization'))
    

    Больше информации:

    Официальный документ здесь

    07.12.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..