如何解决Express中的“访问控制允许来源”问题?

时间:2019-08-30 06:49:22

标签: javascript node.js express

我遇到了“ Acces-Control-Allow-Origin”问题。

Access to XMLHttpRequest at 'http://localhost:5000/users' from origin 'http://localhost:5001' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

因此,我在Express服务器上添加了标题授权,以将该API公开给其他服务。

这是我的index.js文件:

const express = require('express');
const app = express();
app.use(express.json());

app.use(function(res){
    res.header('Access-Control-Allow-Origin', "http://localhost:5001");
    res.header('Access-Control-Allow-Mehods', 'GET, PUT, POST, DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
}); 

const users = require('./api/user');
app.use('/users', users);

const user_has_question_response = require('./api/user_has_question_response');
app.use('/user_has_question_response', user_has_question_response);

const question = require('./api/question');
app.use('/question', question);

const response = require('./api/response');
app.use('/response', response);


const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Listening on port ${port}...`));

不幸的是,我的Express服务器现在有一个无限循环。 在我的控制台上没有错误可以分析。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

我同意,您应该阅读有关CORS的信息,但是有一个名为express cors的软件包 或类似名称,您可以指定允许的来源,也可以允许所有危险的请求来源。

临时解决方案:

app.use(cors())

答案 1 :(得分:0)

使用this

示例:

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

app.use(cors())

app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(8000, function () {
  console.log('CORS-enabled web server listening on port 8000')
})