尽管使用 CORS,但对 expressjs 的 POST 请求不起作用

MGS*_*MGS 6 node.js express vue.js axios vuejs2

我的组件中有这个函数,它应该向快速 API 发送 POST 请求:

onSubmit (evt) {

      evt.preventDefault();
      //alert(JSON.stringify(this.description));
      axios.post('http://localhost:3000/api/v1/addComment', {
        articleid: this.id,
        description: this.description
      });

    }
Run Code Online (Sandbox Code Playgroud)

这是请求被发送到的 API:

router.post('/api/v1/addComment/', function(req, res){ 
  var newComment = req.body;
  //newComment.id = parseInt(commentsData.length);
  commentsData.comments.push(newComment);
    
  
  fs.writeFile('app/data/comments.json', JSON.stringify(commentsData), 'utf8', function(err){
       console.log(err);
  });
  
  res.setHeader("Access-Control-Allow-Origin", "*");  
  res.json(newComment);
});
Run Code Online (Sandbox Code Playgroud)

我还需要在我的快递 app.js 文件中使用必要的 CORS 依赖项

var express = require('express');
var reload = require('reload');
var app = express();
var cors = require('cors');
var dataFile = require('./data/articles.json');

app.set('port', process.env.PORT || 3000 );
//app.set('appData', dataFile);
app.set('view engine', 'ejs');
app.set('views', 'app/views');

app.use(express.static('app/public'));
app.use(require('./routes/index'));
app.use(require('./routes/comments'));
app.use(cors());

var server = app.listen(app.get('port'), function(){
  console.log('Listening on port ' + app.get('port'));
});

reload(server, app);
Run Code Online (Sandbox Code Playgroud)

API 路由工作正常,当我收到请求时,但是,当我执行发布请求时,我不断收到此错误:

无法加载http://localhost:3000/api/v1/addComment:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问Origin ' http://localhost:8080 '。createError.js?16d0:16 Uncaught (in promise) Error: Network Error at createError (createError.js?16d0:16) at XMLHttpRequest.handleError (xhr.js?ec6c:87)

我也尝试过将 headers 对象与 axios post 请求一起发送,但无济于事。根据我对 CORS 的研究,我了解到使用 CORS 是允许来自不同域的 API 请求所必需的。我的 express 服务器在 localhost 3000 上运行,而我的 vue 服务器在本地主机 8080 上运行。

有人可以解释为什么尽管需要并在 express 中使用 CORS,但我仍然收到此错误吗?

Faz*_*Faz 8

在分配路由之前尝试向上移动 app.use(cors())