即使我使用npm软件包,Cors也无法在Express中工作

时间:2019-03-19 12:22:11

标签: node.js express cors

在过去的24小时里,我一直在尝试使cors正常工作,但是它不起作用。我尝试在应用程序变量app.use(cors())中以及特定路由(例如router.post('/', cors(),(req, res) => { ... })中使用npm包cors,并尝试使用更长的app.use方法,如下所示。

mailer.js [路线]

const express = require('express')
const nodemailer = require('nodemailer')

var mailerTransport = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    auth: {
        user: 'user@gmail.com',
        pass: 'password'
    }
})

const router = express.Router()

router.post('/',(req, res) => {
    const mailOptions = {
        from: 'email@gmail.com', // sender address
        to: 'email2@gmail.com', // list of receivers
        subject: req.body.subject, // Subject line
        html: `email sent`// plain text body
      };
      mailerTransport.sendMail(mailOptions, function (err, info) {
        if(err)
    {
        ...
    }
    else
    {
        ...
    }
    });
})

module.exports = router;

server.js

app.use(bodyParser.json())

app.use((req, res, next) => {
    res.header("Access-Control-Allow-Origin", "*")
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")

    app.options('*', (req, res) => {
        // allowed XHR methods  
        res.header('Access-Control-Allow-Methods', 'GET, PATCH, PUT, POST, DELETE, OPTIONS');
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
        res.send();
    });
    next()
})

app.use("/mailer", mailer)

2 个答案:

答案 0 :(得分:1)

首先为您的节点应用程序安装npm install cors。并在server.js中进行以下更改

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

app.use(cors())

答案 1 :(得分:0)

首先,您必须将cors的npm软件包安装为“ npm install cors --save”。 在app.js文件中声明“ var cors = require(“ cors”);“ 然后使用“ app.use(cors());”。 我认为它对您有用。