我正在使用Node JS构建一个简单的服务器。我用的是快递。我想使用JQuery测试post请求,但我一直无法成功。我查了一下这个问题,许多回复提到了一个跨原产地问题。我听从了关于这个问题的每一条建议,但我仍然无法成功。下面是我的服务器代码:
var express=require("express");
var app=express();
var cors = require('cors')
app.use(cors());
var bodyParser = require('body-parser-json')
app.use(bodyParser.json())
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
}
app.use(allowCrossDomain);
app.post('/', function(req, res, next) {
console.log(req.body.base);
});
app.get('/', function(req, res) {
console.log("ok");
});
/*Run the server.*/
app.listen(3000,function(){
console.log("Working on port 3000");
});
我试过使用核心模块,也手动启用CORS。还没有。
这是我的前端测试代码:
function makePost() {
$.post( "secret.compute.amazonaws.com:3000/", { base: "Hello" })
.done(function( data ) {
alert( "Got it" );
})
.fail(function( err ) {
console.log(err);
});
}
最后,这是我得到的错误时,张贴失败:
[例外……" nsresult: "0x805e0006 ()"JS框架::file:///Users/my_name/Documents/Development/Origin/FrontEndTest/jquery.js:: .send:: line 4" data: no]
知道是怎么回事吗?
在服务器上,你必须在你的路由方法中设置响应。否则客户端会等待,最后崩溃。
将服务器文件中的更改为以下代码:
app.post('/', function(req, res, next) {
console.log(req.body.base);
res.end();
});
app.get('/', function(req, res) {
console.log("ok");
res.end();
});
您也可以从服务器发送一些响应数据,如果是,则将res.end()
更改为res.send("some response");