在Node中处理CORS /表达静态文件

时间:2018-07-17 06:39:21

标签: node.js express cors

尝试处理CORS设置一个简单的Node / Express服务器,如下所示:

const express = require('express');
var cors = require('cors');
const app = express();

const port = process.env.PORT || 3000;

app.use(cors());

app.use(express.static('public'));

app.listen(port, () => {
  console.log('Server active on port: ', port);
});

使用此cors lib:https://www.npmjs.com/package/cors

剩下的是一个简单的应用程序,使用JQuery ajax来获取一些数据...在启用了CORS chrome扩展程序的情况下工作,但无法弄清楚如何设置简单的服务器,因此我不必使用chrome扩展程序...

2 个答案:

答案 0 :(得分:1)

您可以尝试设置要传递给cors软件包的选项,像这样

const corsOptions = {
    origin: process.env.CORS_ALLOW_ORIGIN || '*',
    methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'],
    allowedHeaders: ['Content-Type', 'Authorization']
};

app.use(cors(corsOptions)); 

希望这会有所帮助。

答案 1 :(得分:-1)

您可以使用这样的cors中间件

 const corsMiddleware = (req: Request, res: Response, next: NextFunction) => {
  logger.debug(req.method + " at " + req.url);
  res.setHeader("Access-Control-Allow-Origin", "*"); // you can optionally replace * with your server address
  res.setHeader("Access-Control-Allow-Credentials", "true");
  res.setHeader(
    "Access-Control-Allow-Methods",
    "POST, GET, PUT, DELETE, OPTIONS"
  );
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Authorization"
  );

  next();
};

要将此中间件用于各种请求,请使用

app.all("*", corsMiddleware);

这会将这些标头添加到所有请求中。