25

私は、静的な html、css、および javascript を提供する小さなデモ Web サーバーを作成しています。サーバーは次のようになります

(function () {
    "use strict";

    var http = require("http");
    var connect = require('connect');
    var app = connect()
        .use(connect.logger('dev'))
        .use(connect.static('home'));

    var server = http.createServer(app);
    server.listen(9999, function () {
        console.log('server is listening');
    });
})();

私のクライアント側の JavaScript は、別のサーバーへの ajax 呼び出しを行います。どうすれば追加できますか

Access-Control-Allow-Origin: http://example.com

クライアント側のJavaScriptがajax呼び出しを実行できるように、サーバーの応答に

4

4 に答える 4

18

エクスプレスが私を台無しにしてしまったので、これを理解するのに少し苦労しました.

enable corsを見てください。基本的Access-Control-Allow-Originに、cors on を有効にするドメインに追加する必要があります。response.setHeadersは、このタスクに最適です。

注意すべきもう 1 つのことは、connect にはルートを処理する方法がないことです。アプリに異なるルートが必要な場合は、それぞれのルートにロジックを記述し、cors を有効にするルートに res ヘッダーを追加する必要があります。あなたはそれを使用することができますreq.url

var http = require("http");
var connect = require('connect');

var app = connect()

    .use(connect.logger('dev'))

    .use(connect.static('home'))

    .use(function(req, res){

    res.setHeader("Access-Control-Allow-Origin", "http://example.com");
    res.end('hello world\n');

 });

var server = http.createServer(app);

server.listen(9999, function () {

    console.log('server is listening');
});

これは、Chrome 開発ツールで得た応答です

HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://example.com
Date: Sat, 15 Jun 2013 16:01:59 GMT
Connection: keep-alive
Transfer-Encoding: chunked
于 2013-06-15T14:39:34.237 に答える
7

これが役立つことを願っています:

//CORS middleware
var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', config.allowedDomains);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');

    next();
}

//...
app.configure(function() {

    app.use(allowCrossDomain);
    app.use(express.static(__dirname + '/public'));
});

詳細: CORS を許可するには?

于 2013-12-25T21:20:56.693 に答える