2016-11-24 24 views
7

node.js'de (Hapi çerçevesini kullanarak) Uygulamamın kullanıcı hesabı okumaya izin vermesi için bağlantı oluşturuyorum. Google bu talebi ele alır ve izin verme hakkında bilgi ister. Daha sonra Google, GET parametresiyle sunucumu bir yanıt kodu olarak yönlendiriyor ve burada bir sorunum var.Chrome, yeniden yönlendirme yapıldıktan sonra çerezleri göndermiyor

Google Chrome, oturum kimliğine sahip çerez göndermiyor.

Bu çerezi, çerez düzenleme uzantısında bir oturum çerezi olarak işaretlerseniz, gönderilir. Php ile aynı davranış, ancak php oturum oluştururken oturum olarak işaretler, bu yüzden sorun değil. Ben eklenti hapi-auth-cookie kullanıyorum, oturum oluşturur ve bu konuda her şeyi ele alır. Ben de o çerez, HttpOnly olarak hapi-auth-çerez ayarlarında işaretliyorum, çünkü fark ettim ki, fark ettim ki, PHP oturum çerezini ve node.js. Her yönlendirmede yanıt 401 eksik kimlik doğrulaması var. İmleci, adres çubuğuna yerleştirir ve enter tuşuna basarsam, her şey iyi çalışır, bu yüzden yönlendirme ile ilgili bir sorun olur.

Sorumum temel olarak, bu davranışa neden olabilir. Öte yandan, itfaiyenin her istekten sonra herhangi bir sorun olmadan çerez gönderdiğinden bahsetmek zorundayım.

Başlıkları yönlendirme sonra (oturum ile hiçbir çerez):

{ 
    "host": "localhost:3000", 
    "connection": "keep-alive", 
    "cache-control": "max-age=0", 
    "upgrade-insecure-requests": "1", 
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36", 
    "x-client-data": "CJS2eQHIprbJAQjEtskECKmdygE=", 
    "x-chrome-connected": "id=110052060380026604986,mode=0,enable_account_consistency=false", 
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
    "accept-encoding": "gzip, deflate, sdch, br", 
    "accept-language": "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4" 
} 

Başlıkları (ince ne çalışacaktır) adres çubuğuna girdiğiniz vurduktan sonra:

{ 
    "host": "localhost:3000", 
    "connection": "keep-alive", 
    "cache-control": "max-age=0", 
    "upgrade-insecure-requests": "1", 
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36", 
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
    "accept-encoding": "gzip, deflate, sdch, br", 
    "accept-language": "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4", 
    "cookie": "SESSID=very_long_string" 
} 
+0

Lütfen yönlendirme kodunu göster. Kontrol edilecek iki nokta: Sitede her yerden görülebilmesi için oturum çerezinde rootpath ayarlıyor musunuz? Yönlendirmeniz, çerezin ayarlandığı sayfa ile aynı etki alanı/bağlantı noktası/protokole mi? – jfriend00

+0

Evet, çerezin yolu var:/ve her rotada iyi çalışıyor. Google, kullanıcı izinlerine izin verdikten sonra siteme yönlendiriyor, bu yüzden bu kodu almadım. Ve teorik olarak her şey yolunda, çünkü giriş çubuğuna giriş yapabilirim ve daha sonra çerez gönderilir. Google chrome, google'dan 'http: // localhost: 3000/api? Code = code_from_google' numaralı telefona yeniden yönlendirildikten sonra çerez göndermiyor, ancak bağlantıyı kopyalayıp yapıştırırsam çalışır. –

cevap

4

Bu sorun hapi-auth neden olur -cookie isSameSite (Hapi'nin yeni özelliği) ile henüz ilgilenmiyor. Manuel olarak ayarlayabiliriz, örneğin.

const server = new Hapi.Server(
    connections: { 
     state: { 
      isSameSite: 'Lax' 
     } 
    } 
); 

Ama 'Strict' seçeneği sunulur ve birçok durumda bu değeri değiştirmek istemeyebilirsiniz varsayılan olarak o, düşünün lütfen.

+0

SameSite için "Lax" özelliğini kullanmak benim sorunumu çözdü, ama merak ediyorum: "cookieAuth.set" → "answer.redirect" dizisi ile ilgili değişikliği değiştirmek için neyin yeniden yönlendirme isteğine döndürülmesi gerekiyor? 'isSameSite' 'Sıkı'? Yeniden yüklersek, kurabiyeleri alırız. 'Set-cookie' açıkça çalışıyor. Yönlendirmenin tam olarak nitelendirilmiş olmasına rağmen Chrome, yeniden yönlendirildiğinde çerezi göndermiyor. –

+0

Yukarıdaki sorunun daha eksiksiz bir formunu ['42216700'] olarak yükselttim (http://stackoverflow.com/questions/42216700/how-can-i-redirect-after-oauth2-with-samesite-strict- ve-yine-get-my-çerezler) –

İlgili konular