Не удалось получить `Content-Disposition` из ответа сервера - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь получить значение из Content-Disposition из моего внутреннего ответа.но я не могу получить это вообще ..

вот мой код:

public getQuoteImage(sharedQuote):Observable<any> {
    return this.http.post(environment.downloadSummarUrl, JSON.stringify(sharedQuote), { 
      headers: this.params.headers.validate,
      observe: "response",
      responseType : 'blob'
    });
  }

Я пытаюсь получить filename из Content-Disposition из следующего:

downloadSummaryContent() {
    this.server.getQuoteImage(this.sharedQuote).subscribe((data) => {
      console.log( 'headers are', '\n', data, '\n',  data.headers.get('Content-Disposition') ); //but not getting the file name
      var url = window.URL.createObjectURL(data);
      var a = document.createElement('a');
      document.body.appendChild(a);
      a.setAttribute('style', 'display: none');
      a.href = url;
      a.download = 'quote.pdf';
      a.click();
      window.URL.revokeObjectURL(url);
      a.remove(); // remove the element
    });
  }

enter image description here

Но не получаю значение вообще.

в консоли я получаю:

{
  "headers": {
    "normalizedNames": {

    },
    "lazyUpdate": null,
    "lazyInit": null,
    "headers": {

    }
  },
  "status": 200,
  "statusText": "OK",
  "url": "https:XXXXXXservice/p/shipment/download/",
  "ok": true,
  "type": 4,
  "body": {

  }
}

1 Ответ

0 голосов
/ 08 июня 2018

Согласно документации MDN Access-Control-Expose-Headers , запросы CORS разрешают только javascript доступ к следующим заголовкам ответов:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Срок действия
  • Последнее изменение
  • Pragma

Сервер может разрешить доступдля других заголовков ответа, использующих ответ Access-Control-Expose-Headers, поэтому для того, чтобы Content-Disposition был доступен для клиента, вам нужно будет ввести заголовок

Access-Control-Expose-Headers: Content-Disposition

в ответе

...