SORU
15 AĞUSTOS 2011, PAZARTESİ


Nasıl Express/Node.js içinde bir İSTASYONDAN izin vermek için?

Express.js web çerçeve kullanan node.js benim uygulamada bir İSTASYONDAN destek olmaya çalışıyorum. Bu işlemek için nasıl hakkında a Google group discussion okudum ve KÖŞELERİ nasıl çalıştığı hakkında birkaç makale okudum. Öncelikle bu yaptığım (kod CoffeeScript sözdizimi ile yazılmış):

app.options "*", (req, res) ->
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  # try: 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
  # try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

İşe yaramıyor. Tarayıcımda (Chrome) başlangıç SEÇENEKLERİ istek gönderme gibi görünüyor. Ben sadece kaynak için blok güncelleme ne zaman çapraz kökenli bir GET isteği göndermek istiyorum:

app.get "/somethingelse", (req, res) ->
  # ...
  res.header 'Access-Control-Allow-Origin', '*'
  res.header 'Access-Control-Allow-Credentials', true
  res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
  res.header 'Access-Control-Allow-Headers', 'Content-Type'
  # ...

Çalışır (Krom). Bu da Safari'de çalışıyor.

Okudum...

Bir tarayıcı bir İSTASYONDAN uygulanmasında, her kaynak çapraz GET veya POST isteği GET veya POST TAMAM olup olmadığını kontrol eden SEÇENEKLERİ isteği ile gelmelidir.

Yani benim asıl soru, nasıl oluyor bu iş gibi görünmüyor benim durumumda nedir? Neden benim uygulama değil.blok seçenekleri denir? Neden benim ana app başlıkları ayarlamak gerekiyor.blok olsun?

CEVAP
15 AĞUSTOS 2011, PAZARTESİ


Bir sonraki eşleşen yol denetimi geçirmeden deneyin. Eğer Express app eşleşen.güzergah önce, sonra bu yaptığın sürece seçenekler rota üzerine devam etmeyecek(sonraki not):

app.get('somethingelse', function(req, res, next) {
    //..set headers etc.

    next();
});

KÖŞELERİ şeyler organize açısından, benim için çalışan bir katman koydum:

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

    next();
}

//...
app.configure(function() {
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({ secret: 'cool beans' }));
    app.use(express.methodOverride());
    app.use(allowCrossDomain);
    app.use(app.router);
    app.use(express.static(__dirname   '/public'));
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • NewsyTech

    NewsyTech

    2 AĞUSTOS 2010
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012