我正在使用Node构建一个简单的服务器。我使用快车进行路由选择。我想使用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);
});
}
最后,下面是当post失败时遇到的错误:
例外..。"“结果:"0x805e0006 ()“位置:"JS框架::file:///Users/my_name/Documents/Development/Origin/FrontEndTest/jquery.js ::.send ::第4行”数据:否
对发生了什么事有什么想法吗?
发布于 2015-10-07 07:48:57
在服务器上,必须在路由方法中设置响应。否则,客户端将等待它,并最终崩溃。
在服务器文件中,更改到此代码的路由:
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");
。
https://stackoverflow.com/questions/32996103
复制相似问题