2011-11-09 21 views
5

私はこのAPIをNodejs-Expressでビルドしています:クロスドメインアクセスでWebサービスを利用できるようにするにはどうすればよいですか?

app.get('/api/v1/:search', function(req, res){ 
     var response = {} 
     res.contentType('application/json'); 
       // process req.params['search'] 
       // build and send response 
       res.send(response, response.status_code); 
      }); 

しかし、私は別のドメインに座るクライアントを作る必要があります。このコードを修正して、JQuery $ .ajaxなどのように呼び出せるようにするにはどうすればいいですか?

答えて

13

何か作業をする必要があります:

//Middleware: Allows cross-domain requests (CORS) 
var allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type'); 

    next(); 
} 

//App config 
app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.cookieParser()); 
    app.use(express.session({ secret: 'secret' })); 
    app.use(express.methodOverride()); 
    app.use(allowCrossDomain); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 
+0

注:誰かがこれを見ていて、それを拾っていない場合、app.use(allowCrossDomain); // App configセクションからコードのapp.configure()部分のキーコンポーネントです。(すべてのミドルウェアコードが必要です) – cmcculloh

+0

おかげで..あなたの時間を大いに節約できました。 。 – whizcreed

0

Thisは役に立ちます。

私はJQueryが既に隠れたiframeを使ってクロスドメイン要求をサポートし始めたと思うが、わからない。このような

+0

私はクールな、ハックが好き。しかし、標準的な方法でクロスドメインからWebサービスにアクセスできるようにする必要があるため、APIは公開APIになります。 – xybrek

関連する問題