0

percolator js CRUDCollection を使用して小さな API を実装しました。localhost:3000 のノードによって提供されています。localhost:8000 で実行されている django アプリでその API を使用できるようにしたいのですが、エラーで失敗しますOrigin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.

パーコレーター関数でヘッダーを設定しようとしましたが、無視されています:

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

代替手段として JSONP を調べましたが、コールバック関数で応答をラップするためのフックがわかりませんでした。

どうすればこれを解決できますか?

4

1 に答える 1

0

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 以外の何かが必要になるでしょう。

于 2013-02-15T15:30:40.377 に答える