Почему мой заголовок ответа Edge HTTP не возвращается? - PullRequest
0 голосов
/ 03 октября 2019

У меня проблема с моим приложением Angular 8, работающим в Edge (в то время как во всех других браузерах все работает нормально).

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

Я проверял, и у меня нет ошибки или предупреждения политики CORS, дажена вкладке сети я ясно вижу, что HTTP-вызов входа в систему возвращает 200 OK, и эти заголовки присутствуют.

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

Кто-нибудь знает, почему это может происходить? Я читал, что вы не должны включать символы подчеркивания, что также не в моем случае.

Вот изображение, прикрепленное к тому, что я получаю

enter image description here

Вот как я пытаюсь получить значения ответа заголовков:

return this.http.post('MYENDPOINT/login', null, { headers: headers, observe: 'response' })
  .pipe(
    tap(res => {
      console.log('getting from response headers for key hcs-token: ', res.headers.get('hcs-token));
      console.log('getting from response headers for key HCS-TOKEN: ', res.headers.get('HCS-TOKEN));
      console.log('getting from response headers for key hcs-refresh-token: ', res.headers.get('hcs-refresh-token'));
      console.log('getting from response headers for key HCS-REFRESH-TOKEN: ', res.headers.get('HCS-REFRESH-TOKEN'));
      console.log('getting from response headers for key hcs-correlation-id: ', res.headers.get('hcs-correlation-id'));
      console.log('getting from response headers for key HCS-CORRELATION-ID: ', res.headers.get('HCS-CORRELATION-ID'));
    //some extra logic....

    }));
}

1 Ответ

0 голосов
/ 03 октября 2019

Я полагаю, что вы отправляете их в нескольких заголовках, и в этом случае в IE / Edge есть известная ошибка, которая означает, что вы получаете только первую.

Так что, если ваш серверотправляет это:

Access-Control-Expose-Headers: hcs-token
Access-Control-Expose-Headers: hcs-refresh-token
Access-Control-Expose-Headers: hcs-correlation-id

, затем измените его на это, чтобы решить проблему с Edge (и все еще работайте в других браузерах):

Access-Control-Expose-Headers: hcs-token, hcs-refresh-token, hcs-correlation-id

Они должны означать то же самоено Edge не видит этого из-за вышеупомянутой ошибки.

Я ценю, что на вашем скриншоте они находятся на одной строке, но не уверены, откуда этот скриншот, и если он автоматически объединил несколько строк в однуили если это точное отображение того, что отправлено обратно? Может быть лучше использовать инструмент командной строки для подтверждения? Или покажите свой код на стороне сервера.

...