javascript - 下载文件时如何避免浏览器出现 about:blank#blocked
问题描述
我正在尝试从 Node.js 服务器下载文件并让下载被 Chrome 阻止。在寻找解决方案后,我遇到了一个类似的问题。我"Access-Control-Allow-Origin", "*"
在标题中添加了一个,但仍然被阻止下载。
客户端代码:
onClickLink: async function(oEvent) {
const oModel = this.getView().getModel();
const responseData = await getDocumentFile(documentFileName);
let a = document.createElement("a");
a.href = responseData;
a.download = "file.docx";
a.click()
},
function getDocumentFile(fileName) {
const ip = location.host;
let request = $.ajax({
type: "POST",
url: http() + ip + "/documentGetFile",
responseType: "arraybuffer",
headers: {
"Accept": "application/docx"
},
data: {
fileName: fileName
},
error: function (err) {
console.log("ERROR: " + err);
}
});
return request;
}
服务器端:
app.post("/documentGetFile", async function (req, res, next) {
const fileName = req.body.fileName;
const downloadResult = await downloadFileFromAPI(fileName,
CUSTOMER_CONFIG.default.data.fileFolder);
// downloadResult.file returns a 15MB file
res.setHeader("Content-Type", "application/docx");
res.setHeader("Accept-Encoding", "base64");
res.setHeader("Access-Control-Allow-Origin", "*");
res.send(downloadResult.file);
res.end();
});
解决方案
推荐阅读
- java - "" 中构造函数的参数 0 需要找不到类型为 "" 的 bean
- javascript - React 通过使用 useState 的功能变体来防止重新渲染
- f# - F# 类型与 `and` 和 Lazy?
- list - Prolog - 将列表的偶数元素乘以数字(F)
- postgresql - postgresql 数据库语言环境问题
- javascript - React:当我卸载组件时,状态不是最新的
- reactjs - 为什么切片推送在 redux 中有效但在 concat 中无效?
- c# - 删除exe.config时程序崩溃?
- python - 我有两个数据帧 A 和 B,都有一个列时间戳。如果时间戳和(时间戳+ 15分钟)之间存在于B中,我将如何检查A的时间戳
- c++ - 即使在算术运算之后,我如何才能显示用户的实际输入?