在使用 koa-static 中间件时,发现前台直接GET请求文件资源无法自定义headers(Element Plus Upload组件的限制),所以我将token参数放到URL之后,作为Query参数使用。
后端判断是否是请求文件资源,如果是的话就尝试获取Token,并重新赋值给headers中的authorization参数,具体代码如下:
// app.js中,放到JWT插件前
app.use(async (ctx, next) => {
let isFileUrl = /^\/\d{14}\/.+\.+/.test(ctx.request.url);
if (isFileUrl) {
const { token } = ctx.request.query;
ctx.headers.authorization = "Bearer " + token || "";
}
await next();
});
文件资源URL格式:https://xxx.com/xxx/xxxx.png?token=xxx