Node.js 客户端未从服务器获取下载文件

Node.js 客户端未从服务器获取下载文件,node.js,express,cors,Node.js,Express,Cors,我得到了一个express服务器,它发送一个文件作为响应, 但问题是,我正在尝试从具有不同来源的客户端执行get请求,我已经在服务器上启用了cors,但是我的客户端没有返回响应文件。 我正在使用express的内置模块,res.download(file)发送文件 我已经通过从不同来源向服务器发送post请求对其进行了测试,客户端得到了响应,但当我发送get请求下载文件时,服务器收到了请求,但客户端似乎没有收到响应文件 我是否需要设置一些额外的标题来实现此功能 代码服务器端: const cor

我得到了一个express服务器,它发送一个文件作为响应, 但问题是,我正在尝试从具有不同来源的客户端执行get请求,我已经在服务器上启用了cors,但是我的客户端没有返回响应文件。 我正在使用
express的
内置模块,
res.download(file)
发送文件

我已经通过从不同来源向服务器发送
post
请求对其进行了测试,客户端得到了响应,但当我发送get请求下载文件时,服务器收到了请求,但客户端似乎没有收到响应文件

我是否需要设置一些额外的标题来实现此功能

代码服务器端:

const cors = require('cors')
app.use(cors())

app.get("/download/:downloadId",async (req,res) => {



    let downloadId = req.params.downloadId;
    console.log(downloadId)
    let fileName = glob(MYPATH,{},(err,files) =>{
        // res.setHeader('Access-Control-Allow-Origin', '*');
        res.download(files[0],"filename",{headers:{'Access-Control-Allow-Origin':"*"}})
    })



})
代码客户端:

const getFileName = (header) => {

    const fileName = header.headers.get('content-disposition').split('filename=')[1].slice(1,-1)

    return fileName
}

const downloadFile = async () => {
   let file =  await fetch(`${urlDownload}/` + downloadUserId )

let blobObj = {
       filename:getFileName(file),
        blob:await file.blob()
    }

    console.log(blobObj)
}
从中找到了我的答案,显然是因为cors只启用客户端可以从响应中访问的某些头

默认情况下,我需要的头没有启用,我的客户端javascript代码需要该头的值来完成下载

因此,我需要在服务器响应的头中添加这个头(
accesscontrolexpose Headers
),允许的头的值与默认头的值不同

大概是这样的:

res.setHeader('Access-Control-Expose-Headers','Content-Disposition')

您在客户端遇到了什么错误?您肯定应该共享代码的相关部分以获得更好的帮助。您可以提供端点代码示例吗?@mousetail没有错误,只是客户端没有从响应接收到文件。响应到底出了什么问题?是空的吗?这是400错误吗?超时了吗?