【发布时间】:2021-08-21 16:46:56
【问题描述】:
我有一个快速服务器,它发回一个文件作为响应,
但问题是,我正在尝试从不同来源的客户端发出获取请求,我已经在我的服务器上启用了 cors,但我的客户端没有取回响应文件。
我在构建模块中使用express's,res.download(file) 发送文件。
我已经通过从不同来源向我的服务器发送post 请求来测试它,并且客户端得到了响应,但是当我发送一个下载文件的获取请求时,我的服务器收到了请求,但是它似乎客户端没有得到响应文件。
是否需要设置一些额外的标题才能使其正常工作?
代码服务器端:
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)
}
【问题讨论】:
-
您在客户端遇到什么错误?
-
您绝对应该分享代码的相关部分以获得更好的帮助。
-
能否提供端点代码示例?
-
@mousetail 没有错误,只是客户端没有收到来自响应的文件
-
那么响应到底有什么问题呢?是空的吗?是400错误吗?超时了吗?