2016-03-21 14 views
0

http://localhost:9000 adresinde çalışan bir AngularJS uygulamasına sahibim. Ön uç uygulaması http://localhost:8088'a karşı bir http isteği yapar. Bu yüzden, yanıt başlıklarında CORS'i kurmak zorunda kaldım. Ben // localhost arıyorum ederkenBir yönlendirme yaptığımda tarayıcı konsolunda hata yok İstenilen kaynakta 'Erişim-Denetim-İzin-Kökeni' yok üstbilgisi var

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    next(); 
}); 

Her şey iyi çalışır:

delete $http.defaults.headers.common["X-Requested-With"]; 
$http.defaults.headers.common["Accept"] = "application/json"; 
$http.defaults.headers.common["Content-Type"] = "application/json"; 

ve sunucu tarafında

(ExpressJS):

Ben istemci tarafında tarihinde eklendi 9000 - > // localhost: 8088. Ancak, farklı bir URL'ye (//api.example.com/authorize) yönlendirme yaptığımda, tarayıcı konsolunda aşağıdaki hatayı aldım: XMLHttpRequest, //api.example.com/authorize?response_type=code dosyasını yükleyemiyor. İstenen kaynakta 'Erişim-Kontrol-İzin-Kökeni' başlığı yok. Origin 'null' bu nedenle erişime izin verilmiyor.

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    next(); 
}); 

app.get('/authorize', function (req, res) { 
    var response = 'https://api.example.com/authorize?response_type=code'; 
    res.redirect(response); 
}); 

sen yanlış ne olduğu hakkında bir ipucu var mı? Sorun, yeniden yönlendirme ve CORS ile ilgisi var gibi görünüyor.

+0

Evet, sorun şu ki, https://api.example.com Access-Control üstbilgileriyle yanıt vermiyor. – idbehold

cevap

0

301, 302, 303, 307 veya 308 durum kodlarıyla yapılan yönlendirmeler size bir hata verecektir. Bu değiştirilmekte, ancak şimdilik yönlendirme kullanmadan yanıt başlığında veya gövdede yönlendirme URL'sini geri göndermek gibi bir geçici çözüm gerekmektedir.

  1. : tarayıcılar yakalayıncaya kadar

    , uygulanabilir tek seçenek birini veya bir kombinasyonu gibi görünüyor: oradan

    Bu

    iyi aktaran bu other reply

    açıklanmıştır Sorun yalnızca basit istekler için yönlendiriyor.

  2. 305 yönlendirme, kendi URL'nizle Konum üstbilgisinde "proxy" olarak. Sınırlı tarayıcı desteği için hazır olun, 305 kullanımdan kaldırılmıştır.
  3. sahte bir "yönlendirme" yapın:
    • dönüş HTML meta yenileme ve/veya Javascript Yer değişikliği ile.
    • İçe aktarma hedefi olan iframe kaynağına sahip bir görünüm penceresi içeren iframe içeren HTML döndürün.
    • , içeriğe erişmek için kullanıcının tıklatması gereken bir bağlantı görüntüler. ı ne yaptığını Sonunda

istemci tarafında linki koymak oldu, ben en kolay ve en temiz olduğunu düşünüyorum.

İlgili konular