首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx Cors Angular9 RestApi

Nginx Cors Angular9 RestApi
EN

Stack Overflow用户
提问于 2020-05-16 05:20:04
回答 1查看 252关注 0票数 0

我是一个angular初学者,正在尝试部署一个CRUD应用程序。我找到了这个src,编译成功,上传到我的vps上,但当我在浏览器上查看时,我得到了Cors错误:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
        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)

EN

回答 1

Stack Overflow用户

发布于 2020-05-17 00:55:00

在node app中,你可以做下一件事:

代码语言:javascript
复制
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();
});

代替或紧随其后

代码语言:javascript
复制
app.use(cors());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61828546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档