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.UrlReferrerSunucu 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.UrlReferrerMülkü kullanın .
Sahnelerin altında sadece ServerVariables("HTTP_REFERER")mülkü kontrol ediyor .
UrlReferrerbasit 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.UrlRefererTesiste atacağım System.UriFormatExceptionreferer 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.Headersdaha iyi bir seçimdir Request.ServerVariables, çünkü Request.ServerVariablesiyi başlıklar gibi ortam değişkenleri tümünü içeren Request.Headerstek başlıklarını içerdiğini çok daha kısa bir listesidir.
Dolayısıyla en iyi çözüm, Request.Headerskoleksiyonu 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.
RefererBaşlığın HTTP_REFERRERsunucu 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 ReferrerBurada arama yaparken Google sizi bu gönderiye götürdüğünden , anlaşma şu şekildedir: içermeyen normal çağrılandan Web APIfarklı 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 .RequestMVC RequestHttpRequestMessageUrlReferrerWeb APIAPI ObjectHeaders
İlk olarak, HttpRequestMessagebir 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 Headergeç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();