【发布时间】:2021-10-16 16:24:40
【问题描述】:
我正在尝试将 Angular 应用程序部署到 Heroku,为此我必须创建一个 sever.js 文件,以便可以使用 node.js 完成部署。 问题是从我的应用程序到我的 api 应用程序的任何请求(也使用 heroku 中的容器注册表部署)被 cors 阻止。
server.js:
function requireHTTPS(req, res, next) {
// The 'x-forwarded-proto' check is for Heroku
next();
}
const allowedOrigins = ['my-api'];
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors({
credentials: true,
origin: (origin, callback) => {
if (!origin || allowedOrigins.includes(origin)) {
console.log(origin);
callback(null, true) ;
} else {
callback(new Error(`Origin: ${origin} is now allowed`))
}
}
}));
app.use(requireHTTPS);
app.use(express.static('./dist/HygeneSpa'));
app.get('/*', function(req, res) {
res.sendFile('index.html', {root: 'dist/HygeneSpa/'}
);
});
app.listen(process.env.PORT || 8080);
错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at api-app. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我注意到的另一件事是 OPTIONS 请求不包含 cors 标头,但 POST 请求包含。
【问题讨论】: