当前位置: 首页 > 知识库问答 >
问题:

向expressjs发布请求,尽管使用CORS但不工作

邹玄裳
2023-03-14

我在组件中有这个函数,它应该向express 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
      });

    }

这是向其发送请求的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);
});

我还要求在express,app.js文件中使用neccessary 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);

API路由运行良好,当我确实获得请求时,但是,当我执行post请求时,我总是得到这个错误:

未能加载http://localhost:3000/api/v1/addcomment:对飞行前请求的响应未通过访问控制检查:请求的资源上没有“access-control-allog-origin”标头。因此,不允许访问源'http://localhost:8080'。createError.js?16D0:16未捕获(promise中)错误:在xmlHttpRequest.handleError(xhr.js?EC6C:87)的createError(createError.js?16D0:16)处出现网络错误

我还尝试在axios post请求中发送一个headers对象,但没有成功。根据我对CORS的研究,我明白使用CORS是为了允许来自不同域的对API的请求。我的express服务器运行在本地主机3000上,而我的vue服务器运行在本地主机8080上。

有人能解释为什么我仍然得到这个错误,尽管在Express中要求和使用CORS?

共有1个答案

楚彦
2023-03-14

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

 类似资料:
  • 当我使用离子服务时,我不断收到以下错误。。。 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。起源http://localhost:8100因此不允许访问。 它只出现在“post”请求中。我的“get”请求没有任何错误。我看过代理的文档,但我并不打算走这条路。我目前正在使用CORS Chrome插件作为解决办法,但很快将会运送到移动设备(离子视图)进行测试,我相信

  • 当按钮被按下时,我执行它

  • 我正在使用Android截击来发出请求。所以我使用这个代码。我不明白一件事。我在服务器中检查params是否始终为null。我认为GETPARAMS()不工作。我应该做些什么来解决这个问题。

  • 问题内容: 我已经在开发中成功启用了CORS。我的Golang后端与本地计算机上的Angular前端通信良好。但是,我不知道如何在生产中启用CORS(DigitalOcean上的Ubuntu)。我在Firefox上得到了这个: “跨域请求被阻止:同源策略禁止读取位于http:// localhost:12345 /anteroom的远程资源。(原因:CORS请求未成功)。” 我正在使用system

  • 我不知所措。我正在尝试配置,并且我已经尝试了在internet/Stack溢出中可以找到的所有东西。 请求在Postman中有效,但在使用公理的React中无效。 以下是我用于删除用户的函数(这在 中有效,但在 React 中触发时不起作用): 我有一个安全配置.java文件,如下所示: 我不知道错误在哪个函数中,但我假设它是方法。但是,我看不出这不应该工作的问题。在我尝试为应用程序添加安全性之前

  • 问题内容: 这是根据提供的示例验证geoJSON的代码: 我正在尝试使用以下代码进行验证: 在此,我提出实际要求: 我在Chrome控制台中收到此错误: 标题 这是与请求相关的数据: 问题答案: 您不应该将其设置为请求标头,而是响应标头。 您可以从响应中看到服务器将接受哪些请求标头: 错误消息告诉您: 似乎也可能不接受。