Javascript 接收带有Nodejs Post请求的net::ERR_EMPTY_响应
我正在尝试在我的节点应用程序中发出post请求;但是,我得到了以下错误Javascript 接收带有Nodejs Post请求的net::ERR_EMPTY_响应,javascript,node.js,ajax,express,post,Javascript,Node.js,Ajax,Express,Post,我正在尝试在我的节点应用程序中发出post请求;但是,我得到了以下错误 OPTIONS http://localhost:27017/postDebate net::ERR_EMPTY_RESPONSE 如何解决这个问题 这是我的路线: var express = require('express'); var router = express.Router(); var Debate = require('../models/debate'); var mdb = require('mong
OPTIONS http://localhost:27017/postDebate net::ERR_EMPTY_RESPONSE
如何解决这个问题
这是我的路线:
var express = require('express');
var router = express.Router();
var Debate = require('../models/debate');
var mdb = require('mongodb').MongoClient,
ObjectId = require('mongodb').ObjectID,
assert = require('assert');
var api_version = '1';
var url = 'mongodb://localhost:27017/debate';
router.post('/'+api_version+'/postDebate', function(req, res, next) {
var debate = new Debate(req.body);
console.log(debate, "here is the debate");
debate.save(function(err) {
if (err) throw err;
console.log('Debate saved successfully!');
});
res.json(debate);
});
module.exports = router;
由于我是在onclick调用我的ejs文件中的函数之后调用这个路由的,所以这里是我的javascript文件
function postDebate() {
var topic = document.getElementById('topic').value;
var tags = document.getElementById('tags').value;
var argument = document.getElementById('argument').value;
var debateObject = {
"topic": topic,
"tags": tags,
"argument": argument
};
console.log(topic, tags, argument);
$.ajax({
type: 'POST',
data: JSON.stringify(debateObject),
contentType: "application/json",
//contentType: "application/x-www-form-urlencoded",
dataType:'json',
url: 'http://localhost:27017/post',
success: function(data) {
console.log(JSON.stringify(data), "This is the debateObject");
},
error: function(error) {
console.log(error);
}
});
}
如何解决此错误?这里有什么问题?
OPTIONS http://localhost:27017/postDebate net::ERR_EMPTY_RESPONSE
您需要在
app
级别添加CORS标题,并且必须根据选项请求运行res.end()
然后检查你的URL,你用某个名字注册了你的模块,所以你的URL看起来应该像/ROUTER\u module\u name/1/postdaignment
,但是你从前端呼叫http://localhost:27017/post
下面是我检查过的最简单的示例,它对我来说很好:
var express = require('express');
var router = express.Router();
var app = express();
app.use(function(req, res, next) {
console.log('request', req.url, req.body, req.method);
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, x-token");
if(req.method === 'OPTIONS') {
res.end();
}
else {
next();
}
});
router.get('/hello', function(req, res, next) {
res.end('hello world')
});
app.use('/router', router)
app.listen(8081)
//try in browser `$.get('http://127.0.0.1:8081/router/hello')`
啊,不幸的是没有运气:/你知道为什么吗?你设法解决了这个问题吗?我已经有两个星期没有这个问题了,我尝试过的一切都不起作用。。。谢谢您!