首页 > 解决方案 > 下载文件时如何避免浏览器出现 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();
});

标签: javascriptnode.js

解决方案


推荐阅读