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,但我仍然收到此错误吗?
| 归档时间: |
|
| 查看次数: |
3860 次 |
| 最近记录: |