Проблема со значениями 'Заголовки ответа' файла в Angular 4 - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть один веб-сервис, который возвращает pdf-файл (байт []) и имя файла в заголовках ответа.

Я вижу значения «заголовков ответа» в Chrome, и все присутствуют (включаяимя файла).Но я не могу получить эти значения в Angular, потому что значение заголовков просто "Content-Type: application / pdf".

Мой код Angular:

  getPdf(url: string){

    http.get(url, {responseType: 'arraybuffer', observe:'response'})
        .subscribe(data => {
            console.log(data.headers.get('filename')); // print: null
            console.log(data.headers.keys()); // print: ["Content-Type"],
            downloadFile(data.body);
    });
  }

Заголовки ответа в браузере:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, X-Request-Width, Content-Type, Accept, authCode
Access-Control-Allow-Origin:*
Connection:keep-alive
Content-Disposition:attachment; filename=file.pdf
Content-Type:application/pdf
Date:Mon, 26 Nov 2018 14:23:37 GMT
filename:file.pdf
Server:JBoss-EAP/7
Transfer-Encoding:chunked
X-Powered-By:Undertow/1

Что-то не так?Как я могу сделать это правильно?

1 Ответ

0 голосов
/ 26 ноября 2018

Я решаю свою проблему, используя «Access-Control-Expose-Headers» на моем веб-сервисе.

Мой java-сервис:

    protected Response buildFile(Status status, byte[] file, String nomeArquivo) {
    return Response.status(status)
            .entity(file)
            .header("Access-Control-Allow-Credentials", "true")
            .header("Access-Control-Expose-Headers", "Content-Disposition, filename")
            .header("Content-Type", "application/pdf")
            .header("Content-Disposition", "attachment; filename="+ nomeArquivo)
            .header("filename", nomeArquivo)
            .build();
}

Дополнительная информация: Как получитьимя файла, загруженного с Angular5

...