Невозможно получить доступ к заголовкам ответа HTTP с сервера на клиенте Angular 5 - PullRequest
0 голосов
/ 20 октября 2018

У меня есть сервер с пружинной загрузкой, доступ к которому осуществляется через внешний интерфейс Angular 5.Доступ к внутреннему серверу осуществляется с использованием конфигурации прокси, которая выглядит следующим образом:

{
  "/api/*": {
    "target": "http://localhost:8085",
    "secure": false,
    "changeOrigin": true
  }
}

Сервер устанавливает несколько заголовков и возвращает ответ в форме ResponseEntity.Это для запроса GET, который должен возвращать поток для загрузки.

    HttpHeaders headers = new HttpHeaders();
                    headers.add("Access-Control-Expose-Headers", "Content-Type, Content-Disposition, Content-Length");
                    headers.add("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                    headers.add("Content-Disposition", "attachment; filename=" + FILE_NAME);
.
.
<some-logic-here>
.
.
return new ResponseEntity<>(content, headers, HttpStatus.OK);

При отладке приложения через Chrome я вижу возвращаемые данные вместе с заголовками, но по некоторым причинам толькоЗаголовок типа содержимого читается, а не остальные.

Код клиента для отправки запроса таков:

export interface FileResult {
  body: any[];
  headers: {};
}

getFileByteArray(url: string): Observable<FileResult> {
    return this.http.get<FileResult>(this.baseUrl + url, this.options);
  }

this.service.getFileByteArray(url).subscribe(fileResult => {
        this.showSpinner = false;
        //var filename = fileResult.headers; <- This is where the headers are not visible
        this.downloadFile(fileResult.body, 'temp');
})

Возвращаются заголовки ответа при просмотре через отладчик Chrome

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
allow-control-allow-origin: *
access-control-allow-headers: Origin, Content-Type, Content-Disposition, Content-Length
access-control-expose-headers: Content-Type, Content-Disposition, Content-Length
content-disposition: attachment; filename=Stats_Workbook_01-SEP-2018_01-SEP-2018.xlsx
content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
content-length: 9803
connection: close

Не уверен, почему они повторяются дважды в приведенном выше фрагменте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...