Ben tarayıcının almanın hızlı, kolay ve güvenilir yol arıyorum HTTP Yönlendiren içinde ASP.Net ( C # ). Ben HTTP Yönlendiren kendisi güvenilmez olduğunu biliyorum, ama eğer yönlendirme almanın güvenilir bir yol istiyoruz olan mevcut.
Ben tarayıcının almanın hızlı, kolay ve güvenilir yol arıyorum HTTP Yönlendiren içinde ASP.Net ( C # ). Ben HTTP Yönlendiren kendisi güvenilmez olduğunu biliyorum, ama eğer yönlendirme almanın güvenilir bir yol istiyoruz olan mevcut.
Yanıtlar:
Mevcut isteğin UrlReferrer özelliğini kullanabilirsiniz :
Request.UrlReferrer
Bu , İstemci (kullanıcı aracısı) tarafından sağlanabilecek veya sağlanmayabilecek istekten Yönlendiren HTTP başlığını okuyacaktır .
Request.UrlReferrer
Sunucu tarafı geri göndermeden sonra kullanıyorsanız dikkatli olun . Elbette Request.UrlReferrer
, geri gönderdiğiniz sayfanın değeri artık elbette olacaktır. Çoğu durumda, insanların önceki sayfaya ihtiyacı vardır. Bu durumda, önceki sayfayı, sayfa ilk yüklendiğinde bir görünüm durumu değişkeninde sakladığınızdan emin olun. Ve sonra bu değişkene eriştiğinizde, geldiğiniz önceki sayfaya sahip olursunuz. Örneğin, asp.net formlarında sayfa yükleme olayında şunları yapabilirsiniz:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Request.UrlReferrer
Mülkü kullanın .
Sahnelerin altında sadece ServerVariables("HTTP_REFERER")
mülkü kontrol ediyor .
UrlReferrer
basit bir çağrıdan çok daha fazlasını yaptığını gösteriyorServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
bir dizeRequest.UrlReferrer
döndürdüğünü , ancak bir Uri döndürdüğünü söyleyebilirim .
Request.Headers["Referer"]
Request.UrlReferer
Tesiste atacağım System.UriFormatException
referer HTTP başlık hatalı olup olmadığını (o sizin kontrolünüz altında genellikle olmadığından hangi olabilir).Kullanmaya gelince Request.ServerVariables
, MSDN'ye göre:
Request.ServerVariables Koleksiyonu
ServerVariables koleksiyonu, önceden belirlenmiş ortam değişkenlerinin değerlerini ve talep başlık bilgisini alır.
Request.Headers Özelliği
HTTP üstbilgilerinin bir koleksiyonunu alır.
Request.Headers
daha iyi bir seçimdir Request.ServerVariables
, çünkü Request.ServerVariables
iyi başlıklar gibi ortam değişkenleri tümünü içeren Request.Headers
tek başlıklarını içerdiğini çok daha kısa bir listesidir.
Dolayısıyla en iyi çözüm, Request.Headers
koleksiyonu doğrudan değeri okumak için kullanmaktır . Yine de, bir formda görüntüleyecekseniz, değeri HTML kodlamasıyla ilgili Microsoft'un uyarılarına dikkat edin.
Referer
Başlığın HTTP_REFERRER
sunucu değişkeninden farklı yazıldığına dikkat edin .
Bunun gibi: HttpRequest.UrlReferrer Property
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
.Net Core 2 mvc kullanıyorum, bu benim için çalışıyor (önizleme sayfasını almak için):
HttpContext.Request.Headers["Referer"];
C# Web API Referrer
Burada arama yaparken Google sizi bu gönderiye götürdüğünden , anlaşma şu şekildedir: içermeyen normal çağrılandan Web API
farklı bir tür kullanır . Normal bir talep bu bilgileri içermediğinden, gerçekten ihtiyacınız varsa, müşterilerinizin bunu dahil etmek için ellerinden geleni yapmasını sağlamalısınız. Bunu kendinizin bir parçası haline getirebilseniz de , daha iyi bir yol kullanmaktır .Request
MVC Request
HttpRequestMessage
UrlReferrer
Web API
API Object
Headers
İlk olarak, HttpRequestMessage
bir UrlReferrer()
yöntem sağlamak için genişletebilirsiniz :
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Ardından müşteri ayarlamanız gerekir Referrer Header
geçen ay API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Ve şimdi, Web API Request
şu şekilde erişebileceğiniz yönlendiren verilerini içerir Web API
:
Request.UrlReferrer();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();