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

  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • UKF

    UKF

    2 Aralık 2009
  • USI Events

    USI Events

    6 AĞUSTOS 2013