node.js - 許可 - スタティック接続サーバーにCORSヘッダーを追加するにはどうすればよいですか?




express post access control allow origin (3)

expressが私を台無しにして以来、この1つを考え出すのに少し苦労しました。

可能なcorsを見てください。 基本的には、Corsを有効にするドメインにAccess-Control-Allow-Originを追加するだけです。 response.setHeadersはこの作業に最適です。

また、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

私は静的な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呼び出しを行うことができますように?


express.staticは設定オブジェクトをとります。 setHeadersプロパティを提供することができ、その関数からレスポンスのヘッダを設定することができます:

    app.use(express.static('public', {
      setHeaders: function setHeaders(res, path, stat) {
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Methods', 'GET');
        res.header('Access-Control-Allow-Headers', 'Content-Type');
      }
    }))

この関数のパラメータは次のとおりです。

  • res 、レスポンスオブジェクト
  • path 、送信されるファイルパス。
  • stat 、送信されているファイルのstatオブジェクト。

私はOriginヘッダに基づいて条件付きでCORSヘッダを設定できるように、ここでリクエストが利用可能であったことを願っています。


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

//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の許可方法





node.js-connect