Reddedilen erişim kullanıcılarını bilgilendirmek için, HTTP başlıklarını kullanarak farklı bir sayfa / belgeye yönlendirmek için iyidir ya da dinamik sayfa içinde bir mesaj dahil etmek en iyisidir?

4 Cevap php

Ben onların erişim girişimi engellendi kullanıcıyı bilgilendirmek için en iyi yöntem ne olduğunu bilmek istiyorum. Ben muhtemelen daha fazla seçenek vardır gerçekleştirmek, ancak bu ben düşünüyorum yöntemler şunlardır:

  1. Özel bir "Erişim engellendi" bir kullanıcıyı bilgilendirmek benim senaryom başlığı üzerinden onları yönlendirir zaman sayfa ulaştı ("Konum:")
  2. Istenen dinamik sayfada mesajda bir kullanıcı bilgilendirmek

Ben eksilerini vs artılarını bilmek istiyorum. Şu anda bu kadar gelebilir:

  1. Yönlendirme için Pro: muhtemelen daha karartılmış?
  2. HTTP sunucusu üzerinde daha az istekleri: istenen sayfasında mesaj Pro?

4 Cevap

(Bazı MVC yapısını kullanıyorsanız) bir hata sayfası veya mevcut isteğin bir hata denetleyici / eylem yönlendir.

Ve aynı zamanda benzer bir arama robotu ya ne oluyor anlar böylece doğru HTTP başlıklarını (kod 401 erişim engellendi için doğru olanıdır) göndermek emin olun.

Yönlendirme için 1. Pro: muhtemelen daha karartılmış?

Obfuscating noktası nedir?

2. istenen sayfasında mesaj için Pro: HTTP sunucusu daha az istekleri?

Neredeyse tüm trafik sayfaları erişim engellendi değil içerik sunarak kullanılacaktır. Yani ben gerçekten bir veya diğer karar için bir neden olduğunu sanmıyorum. Kullanıcıların onlar zaten erişemez sitelerde F5-çekiç olacak gibi değil.

EDIT: To summuarize: It doesn't really make a difference, but if you can try not to redirect and make sure that the proper headers are sent.

EDIT2: As James Wheare pointed out in the comments it's against the HTTP spec to redirect to an error page. In other words: Do not redirect, but print the error directly on the page where it occured along with the proper headers.

Ben orijinal URL artık düzenlenebilir değildir, basit bir nedenle yönlendirme şiddetle karşı tavsiye ederiz.

Ben url bir yazım hatası yaptıysanız:

http://example.com/users/jwheared

Ve yönlendirildi var:

http://example.com/denied

Şimdi benim yazım yanlışı düzeltmek için benim için bir zorluk daha var:

http://example.com/users/jwheare

Aynı prensip, 404 ya da başka herhangi bir hata sayfası için geçerlidir. Bu geçici bir sunucu hatası ise de, farklı bir URL'ye yönlendirmek biraz bekleyin ve sonra sadece daha sonra sayfayı yenilemek yeteneğini kaldırır.

Bu kullanıcı merkezli tavsiye ek olarak, hata sayfası ilgili bir HTTP error code (diğer yanıtlar belirtildiği gibi muhtemelen 401 Yetkisiz) ile servis edilmelidir.

En iyi uygulama HTTP spec takip etmek ve 3xx yönlendirme durum kodlarının hiçbiri açıklanan durum için geçerlidir.

Edit: Bir diğer önemli nokta, bu potansiyel arama motoru performansını zarar olacaktır. Bir paletli yetkisiz bir sayfasını ziyaret ve bir yönlendirme alırsa, o biri olarak tüm yetkisiz sayfalarını görmek, ve potansiyel hata sayfasının sıralamasını artıracak. Eğer doğru hata başlıkları gönderirseniz, daha sonra paletli doğru olarak yetkisiz olduğunu URL'yi belirlemek ve sadece bunu görmezden olasılığı daha yüksektir.

Web tarayıcılarının genellikle HTTP spec yürütmem uygulamak aptal müşterileri vardır. Bir web tarayıcısı kullanarak onları yanı sıra insanlara düşünmek öder.

Bir yönlendirme kullanmayın. Birlikte daha iyi hata belge ile uygun bir durum kodu (örneğin 406) gönderebilirsiniz.

Şifrenizi başarısızlık yüzdesi nedir gayri meşru erişim girişimleri ve eksik girilmiş şifreleri hangi oranda vardır? Çoğunlukla eski ise bu onlar için daha rahatsız edici yapacağız düşünüyorsanız, evet, ayrı bir HTTP sayfasında onları yönlendirebilirsiniz.

Sadece aynı sayfada bir mesaj koymak eğer Öte yandan, çok daha kolay meşru müşterilerin doğru şifreyi girmek için yapmak.