我的 server.js 文件中有以下代码,用于一个使用 express 作为后端的 Web 应用程序和一个它所服务的内置 create react 应用程序。
require('rootpath')();
const path = require('path');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cors = require('cors');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(cors());
app.use(function(req, res, next) {
res.header("Cross-Origin-Embedder-Policy", "require-corp");
res.header("Cross-Origin-Opener-Policy", "same-origin");
next();
});
// Have Node serve the files for our built React app
app.use(express.static(path.resolve(__dirname, 'build')));
// file api routes
app.use('/accounts', require('./accounts/accounts.controller'));
// file api routes
app.use('/files', require('./files/files.controller'));
// All other GET requests not handled before will return our React app
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
});
// start server
const port = process.env.PORT || 2002;
app.listen(port, () => console.log('Server listening on port ' + port));
这里的问题是我需要这段代码才能进行 ffmpeg 文件上传,否则会引发 SharedArrayBuffer 错误:
app.use(function(req, res, next) {
res.header("Cross-Origin-Embedder-Policy", "require-corp");
res.header("Cross-Origin-Opener-Policy", "same-origin");
next();
});
但是,当我留下这段代码时,我的程序的另一部分会发生故障,它会从 s3 获取预签名的 url 并播放音频。每当我从我的 s3 存储桶播放音频时,都会出现以下问题:
ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep
s3 代码是这样的:
function getTemporaryURL({ data }) {
const customer_id = data['customer-id'];
const sound_id = data['sound-id'];
return new Promise((resolve, reject) => {
//get presigned url
var myBucket = process.env.NODE_APP_BUCKET_NAME;
var myKey = "sounds/" + customer_id + "/" + sound_id + ".wav";
const signedUrlExpireSeconds = 120;
try {
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
ResponseContentDisposition: 'attachment',
Expires: signedUrlExpireSeconds
});
resolve(url)
}
catch {
console.log('S3 Object does not exist');
resolve('');
}
});
}
如何修改我的 server.js 以满足我的两个需求?