我是一个angular初学者,正在尝试部署一个CRUD应用程序。我找到了这个src,编译成功,上传到我的vps上,但当我在浏览器上查看时,我得到了Cors错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3000/api. (Reason: CORS request did not succeed).我安装了nginx服务器,并设置了/etc/nginx/sites available/mySite.com:
server{
listen 80;
listen [::]:80;
root /var/www/mySite.com/html;
server_name xxx.xx.xxx.xxx;
location /{
add_header 'Access-Control-Allow-Origin' '*';
try_files $uri /index.html;
}
}我将站点代码放在/var/www/mySite/html中,并使用代理config,将服务器代码放在/var/www/mySite/api中,其中我调用cors lib:
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require('cors');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var casesRouter = require('./routes/cases');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/coronavirus', { useNewUrlParser: true, useUnifiedTopology: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Connected to MongoDB!');
});
var app = express();
app.use(cors());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/api', casesRouter);
module.exports = app;..这是Firefox (68.8.0esr)网络选项卡的屏幕截图:

..and一个Chromium屏幕截图:

Nginx和RestApi中的Cors设置不起作用。有什么想法吗?
谢谢
ps:我使用npm (v6.14.4),node(v13.12.0),nginx (1.14)
发布于 2020-05-17 00:55:00
在node app中,你可以做下一件事:
app.use((req, res, next) => {
const requestedHeaders = req.header('Access-Control-Request-Headers');
const parsedHeaders = [];
if (typeof requestedHeaders === 'string') {
parsedHeaders.push(...requestedHeaders.toLowerCase().split(','));
}
res.header('Access-Control-Allow-Origin', req.headers.origin);
// res.header('Access-Control-Allow-Origin', '*');
if (parsedHeaders.length) {
res.header('Access-Control-Allow-Headers', parsedHeaders.join(', '));
}
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
next();
});代替或紧随其后
app.use(cors());https://stackoverflow.com/questions/61828546
复制相似问题