使用“Access-Control-Allow-Origin”POST到express.js

时间:2014-04-20 02:01:01

标签: node.js post express cross-domain cors

我是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)

我被困在这里,我不知道如何解决这个错误。我的代码有问题??

感谢您提供任何帮助或建议。

1 个答案:

答案 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();
});