我正在使用 Node JS 构建一个简单的服务器。我正在使用 express 进行路由。我想使用 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);
});
}
最后,这是我在发布失败时收到的错误:
[Exception... "" nsresult: "0x805e0006 ()" location: "JS frame :: 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");
关于javascript - 无法向 Node 服务器发出发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996103/