我是Node和Express的新手。我可以从我的服务器应用程序获取数据但在POST时失败。
我的客户端是" http://myapp.com"和#34; http://myapp.com:34627"。
上的节点应用这是Node app:
var express = require('express'), app = express();
var result = {};
app.configure(function()
{
app.use(express.json());
app.use(express.urlencoded());
});
app.set("jsonp callback", true);
app.get('/get/users/:userid/:username',function(req,res)
{
var userID = req.params.userid;
var userName = req.params.username;
result = {
response: 'OK',
url_userid: userID,
url_username: userName
};
res.header('Access-Control-Allow-Origin','http://listasapp.in');
res.json(200,result);
});
app.post('/post/user',function(req,res)
{
console.log( req.body );
result = {
response: 'OK'
};
res.jsonp(200,result);
});
var server = app.listen(34627,function()
{
console.log( 'Server running at http://myapp.com:' + server.address().port );
});
$('#get-data').on('click tap',function()
{
var url = 'http://listasapp.in:34627/get/users';
url += '/24601';
url += '/junihh';
$.getJSON(url,function(rsp)
{
console.log( rsp );
});
});
这是客户方:
$('#get-data').on('click tap',function()
{
var url = 'http://myapp.com:34627/get/users';
url += '/24601';
url += '/junihh';
$.getJSON(url,function(rsp)
{
console.log( rsp );
});
});
$('#post-data').on('click tap',function()
{
var dta = {
userid: '24601',
username: 'junihh'
};
$.ajax({
type: 'POST',
url: 'http://myapp.com:34627/post/user?callback=?',
data: dta,
dataType: 'jsonp',
success: function(rsp)
{
console.log( rsp );
},
error: function(jqXHR,textStatus,errorThrown)
{
console.log( jqXHR.status );
console.log( textStatus );
console.log( errorThrown );
}
});
});
我有一个成功的GET请求但是在POST时我收到了这个错误:
GET http://myapp.com:34627/post/user?callback=jQuery1110009652853850275278_1397958835486&userid=24601&username=junihh&_=1397958835487 404 (Not Found)
我被困在这里,我不知道如何解决这个错误。我的代码有问题??
感谢您提供任何帮助或建议。
答案 0 :(得分:5)
最后,由于这篇文章,我找到了答案:https://github.com/visionmedia/express/blob/master/examples/cors/index.js
我将这部分代码添加到我的Node应用程序中:
app.all('*',function(req,res,next)
{
if (!req.get('Origin')) return next();
res.set('Access-Control-Allow-Origin','http://myapp.com');
res.set('Access-Control-Allow-Methods','GET,POST');
res.set('Access-Control-Allow-Headers','X-Requested-With,Content-Type');
if ('OPTIONS' == req.method) return res.send(200);
next();
});