我是Node and Express的新手。 我可以从服务器应用程序获取数据,但在POST上失败。

我的客户端位于“ http://myapp.com ”上,而节点应用程序位于“ http://myapp.com:34627 ”上。

这是Node应用程序:

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 票数: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();
});

  ask by junihh translate from so

未解决问题?本站智能推荐:

1回复

当我进行重定向时,浏览器控制台中出现错误在请求的资源上没有'Access-Control-Allow-Origin'标头

我有一个运行在http:// localhost:9000的AngularJS应用。 前端应用程序针对http:// localhost:8088发出http请求。 因此,我必须在响应头上设置CORS。 我在客户端添加: 在服务器端 (ExpressJS): 当我调用/
7回复

如何在node.js上的express.js框架中启用跨源资源共享(CORS)

我正在尝试在node.js中构建一个支持跨域脚本的Web服务器,同时仍然提供来自公共目录的静态文件。 我正在使用express.js,我不确定如何允许跨域脚本( Access-Control-Allow-Origin: * )。 我看到这篇文章 ,我觉得没有用。
1回复

骨干/节点CORS:选项200 OK,POST不起作用(Access-Control-Allow-Origin)

我正面临当前的问题,这对我来说似乎很奇怪。 我在前面使用主干来处理我的应用程序,在后面使用Node / Express。 OPTIONS请求的结果为200 OK(我在节点上添加了一个中间件以允许CORS请求),但POST请求未触发。 另外OPTIONS是200,但它仍然在控制台中引发我
1回复

JSONP请求跨域工作,但无法确定来源

我正在尝试JSONP呼叫。 我在服务器1中的domain1.com域下有一个NodeJs应用,如下所示: 在另一台服务器(服务器2)和其他域(domain2.com)下,我创建了一个测试html页面,其调用如下: 我在这里有2个问题: 1)这为什么起作用? 这不是跨域调
1回复

express.js中请求的资源上不存在“ Access-Control-Allow-Origin”标头

我已经在我的nodejs应用程序中配置了cors ,如下所示: 它正在工作,并且可以从http://first.url从nodejs应用程序获取数据,但是当我使用https://test.cloudfront.net进行测试时,它无法工作并返回以下错误。 XMLHttpRequ
2回复

Node / Express CORS POST给出504和403

我正在尝试制作一个非常简单的服务器,该服务器可以在本地运行,并使用我的IP从网络上的另一台服务器中命中。 我从https://www.whatismyip.com/获得了我的IP 它列出了2个地址-本地和IPv4。 当我从邮递员发送POST时,本地工作正常。 我在以下终端requ
1回复

使用CORS与OpenShift上的节点应用程序一起使用POST的空请求正文

我正在使用express在OpenShift上创建一个简单的Node应用程序(我只是修改了OpenShift的默认示例Node应用程序)。 我希望得到CORS支持: 如果我从本地机器发送请求,使用curl它可以正常工作: 但是,如果我使用jQuery从另一个具有不同域的站点发送
3回复

Express JS:请求的资源上没有“Access-Control-Allow-Origin”标头

我有一个在服务器上运行的API和一个连接到它的前端客户端来检索数据。 我做了一些关于跨域问题的研究并且有效。 但是我不确定发生了什么变化。 我现在在控制台中收到此错误: XMLHttpRequest无法加载https://api.mydomain/api/status 。 请求
1回复

Cordova AngularJS $ http.post浏览器CORS问题-“所请求的资源上没有'Access-Control-Allow-Origin'标头。 起源”

希望这可以帮助其他人(因为花了我几个小时才能找到解决方案)。 *是的,那里有许多重复的类似问题,它们是相似的-但是我的问题特定于Cordova平台浏览器应用程序。 * 我正在使用Cordova / PhoneGap用AngularJS构建一个。 向PHP API发出Angular
2回复

如何解决Express JS中没有'Access-Control-Allow-Origin'的问题?

我知道这个问题已经得到回答,其中一些工作了,但对我而言却不是。 我正在努力寻找解决此问题的方法: 我已经尝试下载了chrome扩展程序,但没有帮助我,使用app.use(cors())也没有帮助我。 这是我在expressjs中的代码 这是我在vuejs中试图渲染数据的代