2010-06-23 21 views
5
döndürür

http_referer'ı kaydetmeye çalışıyorum, böylece giriş yaptıktan sonra kullanıcıyı bu URL'ye geri gönderebilirim. Şu anda denetleyicilerimde bir before_filter var. Bir oturum bir redirect_to aracılığıyla oluşturulmamışsa, bunları bir günlük sayfasına gönderir. Ancak HTTP_REFERER'i kontrol ettiğimde nildir ('REQUEST_URI' orijinal olarak geldiğim yerde döndürülür).Ruby on Rails - request.env ['HTTP_REFERER'], nil

Teşekkür ederiz.

cevap

11

HTTP_REFERER, istekte bulunulduğu sayfanın bağlantısının izlendiği önceki web sayfasının adresini içeren istek üzerine tarayıcı tarafından ayarlanan bir HTTP üst bilgisidir. Bir sayfaya doğrudan giderken ayarlanmayacaktır. (request.request_uri() yoluyla ulaşılabilir da)

REQUEST_URI Uniform Resource Identifier Raylar denetleyicisi/eylem erişmek için kullanılan ve daima ayarlanmalıdır olduğunu.

Atma sizin görünüm içine bu ayıklama kodu:

<ul> 
<% request.env.each do |item| %> 
    <li><%= item[0] %> : <%= item[1] %></li> 
<% end %> 
</ul> 

HTTP_REFERER ayarlanmazsa, emin bir bağlantı üzerinden bu sayfaya gitmekte olduğunuz yapmak veya yönlendirmek ve daha sonra ayarlanmış olup olmadığını görmek.

Tarayıcınızın not setting HTTP_REFERER üstbilgisi olması ihtimali vardır. Bunu etkileyen bir eklentiniz olmadığından emin olun. Gönderilecek üstbilgileri görmek için Tamper Data adında şık bir Firefox eklentisi kullanabilirsiniz.

+0

Evet, göstermiyor, ancak, bana verdiğin kod isteği büyük olasılıkla ihtiyacım olan verileri .... kodu için teşekkürler filtreleme benim iç duvarından geçtiğinden gösterir! – Naujpr

+0

@Naujpr: Cevabımı, sorunu çözmenize yardımcı olabilecek bir Tamper Verisi bağlantısı içerecek şekilde güncelledim. İyi şanslar! – Awgy

5

Hangi çözümden yararlandığınıza bakılmaksızın, boş başvuru durumunu ele alabilmeniz gerekir; çünkü istemcinin bunu belirtip seçmemesi gerektiğine karar vermesi gerekir. (Safari'nin özel göz atma ve Chrome'un gizli modunda olduğunuz zaman kapalıdır)

Raylarda, ayarlanmışsa HTTP_REFERER kullanacak olan redirect_to :back'u kullanabilir veya başka bir hata oluşturabilirsiniz.

redirect_to: back öğesini kullanırken, yönlendirme yoksa RedirectBackError kaldırılır. Bu durumda RedirectBackError'u kurtarıp bazı geri dönüş davranışları belirtebilirsiniz.