繁体   English   中英

节点上具有percolator js的跨域XHR

[英]Cross domain XHR with percolator js on node

我已经使用了渗滤器js CRUDCollection实现了一些API。 它由localhost:3000上的节点提供。 现在,我希望能够将该API与在localhost:8000上运行的django应用程序一起使用,但由于失败而失败,并显示错误信息Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.使用Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.

我尝试在percolator函数中设置标头,但该标头被忽略:

list: function($, cb) {
    $.authenticate = checkAuth;
    $.res.setHeader('Access-Control-Allow-Origin', '*');
etc...

我研究了JSONP作为替代方法,但无法找出将响应包装在回调函数中的钩子。

我该如何解决?

这是我第一次听说Percolator.js。 那是一个有趣的图书馆。

无论如何,设置$.res.setHeader('Access-Control-Allow-Origin', '*'); 确实为我工作。 您是否检查过此标头是否确实存在?

现在介绍JSONP。 您可以使用collectionGET代替这样的list

collectionGET:function($) {
    var data = ...; // some code here

    var data_str = $.json(data).toString( ),
        url = require("url").parse($.req.url, true),
        jsonp = url.query.callback && url.query.callback.length && url.query.callback;

    if (jsonp) {
        $.res.setHeader( "content-type", "application/javascript" );
        $.res.write( jsonp + "(" );
    } else {
        $.res.setHeader( "content-type", "application/json" );
    }
    $.res.write( data_str );
    if (jsonp) {
        $.res.write( ");" );
    }
    $.res.end();
}

不过,它有点低(似乎Percolator.js向响应中添加了一些其他内容)。 也许您需要Percolator.js来完成其他任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM