ActionDispatch :: Cookies yanıt olarak Set-Cookie başlığını ayarlamıyor, ancak response.set_cookie ayarlıyor

1
Raounak Sharma 2020-08-03 04:22.

Yalnızca Rails 5 API uygulamam var ve bir JSON isteğine yanıt olarak çerez göndermek istiyorum. ActionDispatch :: Cookies'i, isteğin yanıtında bir tanımlama bilgisi ayarlamak için kullandığımda, yanıtta Set-Cookieüstbilgi ayarlamıyor . response.set_cookieÇalışmasına rağmen .

Ayrıca after_action, uygulama denetleyicisinde bir kanca oluşturmayı da test ettim ve gördüğüm şey Set-Cookie, yanıtta üstbilginin bulunmadığı, ancak tanımlama bilgilerinin ['name_of_cookie'] mevcut olduğudur. Ayrıca sormak istediğim bir soru, bu tanımlama bilgilerinin (ActionDispatch :: Cookies) yanıt olarak ne zaman başlık ayarladıklarıdır? Rafta mı oluyor?

Gereklilik

  1. CORS isteğinde tanımlama bilgileri ayarlamak istiyoruz.
  2. Tüm kaynaklar için tanımlama bilgileri ayarlamak istiyoruz.

Zaten uygulanan

  1. Müşteri ile bir istek gönderir withCredentials
  2. Cevapta Access-Control-Allow-Credentials: trueve Access-Control-Allow-Origin: <origin (request.headers['origin'])>mevcut
  3. Yalnızca Rails API uygulaması olduğu için uygulamaya aşağıdaki ara yazılımları dahil ettik
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore, key: '_namespace_key'

Soru

  1. Neden ActionDispatch :: Cookies çalışmıyor ama response.set_cookie çalışıyor?
  2. ActionDispatch :: Cookies ne zaman yanıt olarak üstbilgileri belirler? afterRaylar uygulamasında herhangi bir geri arama kancasında mı yoksa rafta mı oluyor? Çünkü after_actionapplication_controller'a kadar başlıklar orada değildi.

Garip

  1. Geliştirme ortamındayken ve yerel makinemde çalışıyor, ancak üretimde değil. domainÇerez ayarıyla ilgili bir şey yapmak zorunda mı? Ben de üretimde güvenli ve alternatifli çerez kullanıyorum, ancak geliştirme aşamasında sadecehtponly kullanıyorum.

Burada neyi özlüyorum? Sorunu aramak için günler geçirdim ama bir çözüm bulamadım. Herhangi bir ipucu çok yardımcı olacaktır. Teşekkürler


Düzenle 1

cookies[@name.to_sym] = {
  value: @value,
  expires: @expire,
  httponly: true,
  same_site: 'None',
  secure: false            # It works when I set it to false but doesn't work with `true` in production. In development env it works with either one.
}

response.set_cookie(
  @name.to_sym,
  value: @value,
  expires: @expire,
  httponly: true,
  secure: true
)

Bir şey gözlemledim. Ben ayarlarsanız secure: falsetanımlama o zaman birlikte üretimde değil çalışır secure: true. Öte yandan secure: true, üretimde response.set_cookie ile çalışır.

Benim request.protocol'um HTTP. ActionDispatch :: Cookies, istek protokolü HTTP ise ve secure: trueseçenek yapılandırılmışsa tanımlama bilgilerini bile ayarlamıyor olabilir mi ?

Ama bence secure: truemüşteri tarafı için. Örneğin, bir çerez güvenliyse, tarayıcı onu yalnızca https protokolü üzerinden gönderecektir. Neyi kaçırıyorum?

1 answers

0
Raounak Sharma 2020-08-07 18:46.

Bu davranışın sebebini buldum. Aslında diğer ekip bir application gatewayprodüksiyon üzerinde konuşlandırdı . Bu, Rails sunucusunun başlangıçta HTTPS olan HTTP isteğini almasıyla sonuçlanır.

Şimdi çerezlerimi işaretlediğim secure: truegibi, ActionDispatch :: Cookies protokol HTTP ise bir isteğe yanıt olarak çerez göndermiyor gibi görünüyor. Yalnızca protokol HTTPS ise gönderilir. Ben güvende devre dışı bırakırsanız secure: falseo zaman o iş ya da ben o zaman uygulama ağ geçidi devre dışı eğer ActionDispatch :: Cookie ile çalışır.

secureİstemci tarafı özelliği gibi garip görünüyor , ancak ActionDispatch :: Cookies davranışından, eğer protokol HTTP ise ve güvenli true olarak ayarlanmışsa sunucudan tanımlama bilgileri göndermiyor gibi görünüyor.

Bu davranışla ilgili herhangi bir belge bulamamama rağmen, ancak bu şekilde çalışıyor.

MORE COOL STUFF

Jana Duggar: Aşk ve 'Bir'i Bulmak İçin 5 Yıllık Penceresi Hakkında Söylediği Her Şey

Jana Duggar: Aşk ve 'Bir'i Bulmak İçin 5 Yıllık Penceresi Hakkında Söylediği Her Şey

Jana Duggar, aşkı arayışı konusunda açıktı. İşte konu hakkında söylediği her şey ve beş yıllık evlilik penceresi.

Sam Heughan, "Outlander" Setinden Ne Alacağını Tam Olarak Biliyor - "Onları Giydiğimde Jamie Olduğumu Hissediyorum"

Sam Heughan, "Outlander" Setinden Ne Alacağını Tam Olarak Biliyor - "Onları Giydiğimde Jamie Olduğumu Hissediyorum"

Outlander'ın yıldızı Sam Heughan kısa süre önce kendisini yıldız yapan rol olan Jamie Fraser'ı hatırlamak için setten ne alacağını açıkladı.

Bir Fab Four Insider'a Göre Grubun 'En Heyecan Verici Performanslarından' Biri Olan Erken Beatles Şarkısı

Bir Fab Four Insider'a Göre Grubun 'En Heyecan Verici Performanslarından' Biri Olan Erken Beatles Şarkısı

'She Loves You' bir saatte yazıldı, bir günde kaydedildi ve kariyerlerinin en iyi performanslarından birine sahip The Beatles şarkısı oldu.

Dolly Parton, 'Geçersiz' Büyükannesine Diğer Torunların Hiçbiri Yapmayacakken Yardım Etti - O da Ona Şaka Yapardı

Dolly Parton, 'Geçersiz' Büyükannesine Diğer Torunların Hiçbiri Yapmayacakken Yardım Etti - O da Ona Şaka Yapardı

Dolly Parton ve büyükannesi Bessie'nin özel bir ilişkisi vardı. Büyükanne Parton çok hastaydı ama bu Dolly'nin ona şaka yapmasını engellemedi.

Dünyanın En Sert Ağacı Hangisidir?

Dünyanın En Sert Ağacı Hangisidir?

Meşe veya ceviz ağacının sert olduğunu düşünebilirsiniz, ancak dünyanın en sert ağaçları söz konusu olduğunda, onlara yaklaşamazlar bile.

Okyanusun Derinliklerinde Gizlenen En Korkunç 10 Deniz Yaratığı

Okyanusun Derinliklerinde Gizlenen En Korkunç 10 Deniz Yaratığı

Okyanus güzelliklerle dolu, ama aynı zamanda gezegenimizin en korkunç deniz canlılarından bazılarını da içinde barındırıyor. Bu hayvanların çoğu, okyanus yüzeyinin çok altında, derin denizin karanlık ve yüksek basınçlı dünyasında gizleniyor.

Minecraft'taki En İyi 10 Kılıç Büyüsü

Minecraft'taki En İyi 10 Kılıç Büyüsü

Düşman yaratıklarla savaşıyorsanız veya PvP senaryolarına hazırlanıyorsanız, Minecraft'taki en iyi kılıç büyülerini bilmek size büyük bir avantaj sağlayabilir. Kılıçları büyülemek daha fazla hasar vermenizi, yaratıklardan düşen düşman sayısını artırmanızı ve kılıcınızın dayanıklılığını uzatmanızı sağlar.

Birbirinden Çok Farklı Görünen 13 Sosyalist Ülke

Birbirinden Çok Farklı Görünen 13 Sosyalist Ülke

Sosyalist ülkelerden bahsedildiğinde, genellikle tam devlet kontrolü ve özel mülkiyetin olmadığı düşünülür. Ancak pratikte sosyalist ekonomiler büyük farklılıklar gösterir.

Bear'ın özeti: Marcus Chicago'nun en nazik, en yumuşak, en samimi adamı mı?

Bear'ın özeti: Marcus Chicago'nun en nazik, en yumuşak, en samimi adamı mı?

“Children”dan ünlü bir konuk oyuncu ve bazı yıkıcı haberler yayınlanıyor

9.800 Dolara, Bu Yedi Koltuklu 2008 Toyota RAV4'e 'Bunları Paketler misiniz'?

9.800 Dolara, Bu Yedi Koltuklu 2008 Toyota RAV4'e 'Bunları Paketler misiniz'?

Bu RAV4'ün mükemmel durumda olduğu ve sandalye oyununa hazır olduğu iddia ediliyor.

Amazon Teslimat Vanı, Houston'ın Yaz Sıcağında Ateşli Bir Patlamayla Ateşlendi

Amazon Teslimat Vanı, Houston'ın Yaz Sıcağında Ateşli Bir Patlamayla Ateşlendi

İtfaiye ekiplerinin yangını söndürmeye çalıştığı görüntüler drone ile görüntülendi.

Marvel'ın Kara Panter Gösterisi Şimdiye Kadarki En Önemli Animasyon Gösterisi Olacak

Marvel'ın Kara Panter Gösterisi Şimdiye Kadarki En Önemli Animasyon Gösterisi Olacak

Eyes of Wakanda doğrudan MCU'ya bağlanıyor ve ayrıca X-Men '97, What If..., Daredevil ve daha fazlasıyla ilgili güncellemeler sunuyor.

Laguna Beach Oyuncuları: Şimdi Nerede?

Laguna Beach Oyuncuları: Şimdi Nerede?

'Laguna Beach', 2000'lerin ortalarında lise öğrencileri Lauren Conrad, Kristin Cavallari, Stephen Colletti ve daha fazlasının hayatlarını takip ediyordu. İşte MTV gerçeklik dizisinin oyuncu kadrosunun şu anki hali.

Ava Gardner'ın flört geçmişi: Hollywood ikonunun evliliklerine ve aşklarına bir bakış

Ava Gardner'ın flört geçmişi: Hollywood ikonunun evliliklerine ve aşklarına bir bakış

Ava Gardner, Mickey Rooney ve Frank Sintra ile evlenecekti ve birkaç Hollywood yıldızıyla daha çıktı. İşte Ava Gardner'ın çıkma geçmişine bir bakış.

John Cleese'in Karısı Kimdir? Jennifer Wade Hakkında Her Şey

John Cleese'in Karısı Kimdir? Jennifer Wade Hakkında Her Şey

John Cleese, eşi Jennifer Wade ile 2012 yılında evlendi. John Cleese'in eşi Jennifer Wade hakkında bilmeniz gereken her şey burada.

Michael C. Hall'un Karısı Kimdir? Morgan Macgregor Hakkında Her Şey

Michael C. Hall'un Karısı Kimdir? Morgan Macgregor Hakkında Her Şey

Michael C. Hall, 2016 yılından bu yana eşi Morgan Macgregor ile evli. Michael C. Hall'un eşi hakkında bilmeniz gereken her şey burada.

zamirler süper korkutucu

Çoğu zaman olduğu gibi birdenbire gözüme çarpıyor Her şey yeniden yarı yolda <Hayır, Pasifik'te kesip attığınız değil, karnavalda olan> Her manşet yüksek sesle… ..

Yazma Becerinizi Geliştirmenin Kanıtlanmış 3 Yolu

Yazmanın faydaları ve bunu yapmanıza yardımcı olacak stratejiler

Yazma Becerinizi Geliştirmenin Kanıtlanmış 3 Yolu

2022'de GPT-3'ün piyasaya sürülmesiyle yazma becerisinin önemi azalmış gibi görünüyor. AI ile, zayıf yazıya sahip kişiler de kaliteli personel oluşturabilir.

Yavaş Erozyon: İnsanların Kariyerlerinde Boşa Harcadıkları Yolları Ortaya Çıkarma

Yavaş Erozyon: İnsanların Kariyerlerinde Boşa Harcadıkları Yolları Ortaya Çıkarma

Günümüzün hızlı tempolu ve rekabetçi dünyasında, kişinin kariyeri kişisel gelişim, finansal istikrar ve genel yaşam memnuniyetinde önemli bir rol oynamaktadır. Bununla birlikte, birçok kişi profesyonel yaşamlarında giderek tükenmekte olan amansız bir durgunluk ve tatminsizlik döngüsüne kapılmış durumda.

Bir podcast'i etkili kılan nedir?

Bir podcast'i etkili kılan nedir?

Geçen hafta PressGazette (İngiliz medya haber sitesi) aracılığıyla gönderilen bir basın bildirisi fark ettim. Makale, Scandi podcast barındırma ve reklamcılık şirketi Acast'ın podcasting alanında "muhtemelen en etkili" yayıncılardan oluşan bir konsorsiyuma liderlik edeceğini duyurdu.

Language