如何解决保护直接链接免于下载 Next.js
在我的项目中,用户正在收听 mp3 文件。 项目:Next.js/express.js
用户访问react-player所在页面/audio-test,调用url请求音频文件:/upload/file?f=content/11111.mp3
// upload route
import { Request,Response,Router } from 'express';
import * as appRoot from 'app-root-path';
const router: Router = Router();
router.get('/file',async function(req,res,next) {
const uploadsPath = appRoot.path + '/uploads/';
const { f } = req.query;
const file = uploadsPath + f;
if (fs.existsSync(file)) {
res.sendFile(file,null,function(err) {
if (err) {
log('error when file was read',err);
}
});
res.end();
} else {
return res.status(status.NOT_FOUND).json({
success: false,message: 'err msg',});
}
});
音频文件的接收链接是隐式的,但是获取和下载并不难。
我怎样才能防止这种情况发生?
我尝试对链接进行编码,使用cookies等,但我只能通过这种方式限制一个用户的点击次数,即如果他在播放器中收到链接,则打开它(有条件地)在新窗口中 - 没有访问权限。一切都会好起来的,但我遇到了 Safari 在应用程序本身中不止一次请求它的问题。
此外,如果我理解正确的话,如果您告诉它不是从网站本身请求的,而是在浏览器中打开的,则对链接的访问可能会受到某种限制。但我不知道该怎么做。
非常感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。