[解決済み] create-react-appのcontent-dispositionヘッダが表示されない [重複].
2022-02-11 09:01:31
質問
<余談
この質問には、すでにここで回答があります
:
ASP.NET Web API 2 のクロスオリジン http.get リクエストの応答から、Angular で特定の応答ヘッダー (Content-Disposition など) を取得する。
(2回答)
クローズド
5ヶ月前
.
create-react-appで、expressから提供されています。Expressは、アプリのプロキシとしてのみ機能します。アプリケーションのロジックはCRAにあります。
あるAPIを呼び出して、ファイルをダウンロードしようとしています。APIは、ファイル名を含む"Content-Disposition"ヘッダーで応答を返します。私は私の呼び出しでヘッダーを取得することができません。
Postman/chrome-dev-toolsでAPIを呼び出すと、ヘッダが利用可能であることがわかります。
以下の私のコードをご覧ください。ファイル名のコードはコメントアウトされています。
res.headers
は空です。
let filename = 'test-file-name'; // <--- default file name
const output = fetch(transactionReportPath(), {
headers: {
accept: 'text/csv',
Authorization: `Bearer ${getToken()}`
}
})
.then((res) => {
console.log(res.headers) // <---- empty object
// filename = res.headers.get('Content-Disposition').split(";")[1]
return res.blob()})
.then((blob) => {
const file = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = file;
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
});
解決方法は?
この問題を解決することができました。サーバーのレスポンスに欠けているヘッダーがありました。
response["Access-Control-Expose-Headers"] = "Content-Disposition"
レスポンスにこのヘッダを追加すると、欠落していたファイル名が公開されるようになりました。
関連
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
-
[解決済み] create-react-appベースのプロジェクトを実行するためのポートを指定する方法は?
-
[解決済み】create-react-appでテンプレートが提供されない。
-
[解決済み] ブラウザがファイルのダウンロードを受信したことを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?