5

接続を介して静的ページを実行しています

     var connect = require('connect');
     connect.createServer(
     connect.static(__dirname)).listen(8080);

アクセス制御をバイパスするには、上記のコードに応答ヘッダーを追加する必要があります

  response.writeHead(200, {
             'Content-Type': 'text/html',
             'Access-Control-Allow-Origin' : '*'});

上記の接続コードに追加するにはどうすればよいですか。

4

1 に答える 1

2

ここでこの質問に答えました

関連コード

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');
});

コアを有効にすると、サーバーにコアを追加するための優れたリソースが提供されます。

提供するすべての静的ファイルでcorsヘッダーを送信する必要があり、接続を使用する必要がある場合は、これを行います

案内するconnect\node_modules\send\lib\send.js

setHeaderファイルで関数を探します。これは実際にヘッダーを静的リソースに設定する関数です。追加するだけ

res.setHeader("Access-Control-Allow-Origin", "your domain");

すべてのファイルにcorsヘッダーが含まれます

connect を使用して静的ファイルを提供するだけで、他の機能を必要としない場合は、代わりにsendを使用することを検討してください。これにより、すべてのメソッドに直接アクセスでき、ファイルを編集する必要がなくなります。create server メソッドからヘッダーを追加するだけです。サンプルコードはこちら

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

var app = http.createServer(function(req, res){
// your custom error-handling logic:
function error(err) {
res.statusCode = err.status || 500;
res.end(err.message);
}

// your custom directory handling logic:
function redirect() {
res.statusCode = 301;
res.setHeader('Location', req.url + '/');
res.end('Redirecting to ' + req.url + '/');
}

function setRoot(){ 
res.setHeader("Access-Control-Allow-Origin", 

"http://example.com");

return './public';
}

function setIndex(){
res.setHeader("Access-Control-Allow-Origin", 

"http://example.com");

return '/index.html';
}


send(req, url.parse(req.url).pathname)
.root(setRoot()).index(setIndex())
.on('error', error)
.on('directory', redirect)
.pipe(res);
}).listen(3000);
于 2013-07-02T15:02:48.820 に答える