c# एएसपी.नेट में HTTP रेफरर प्राप्त करना




asp.net http-headers (7)

मैं ASP.Net ( C # ) में ब्राउज़र के HTTP रेफरर को प्राप्त करने का एक त्वरित, आसान और विश्वसनीय तरीका ढूंढ रहा हूं। मुझे पता है कि HTTP रेफरर स्वयं अविश्वसनीय है, लेकिन अगर यह मौजूद है तो मैं रेफरर प्राप्त करने का एक विश्वसनीय तरीका चाहता हूं।


आप वर्तमान अनुरोध की UrlReferrer प्रॉपर्टी का उपयोग कर सकते हैं:

Request.UrlReferrer

यह अनुरोध से Referer HTTP शीर्षलेख पढ़ेगा जो क्लाइंट (उपयोगकर्ता एजेंट) द्वारा प्रदान किया जा सकता है या नहीं।


Request.Headers["Referer"]

व्याख्या

Request.UrlReferer एक System.UriFormatException फेंक देगा यदि रेफरर HTTP शीर्षलेख विकृत है (जो तब हो सकता है क्योंकि यह आमतौर पर आपके नियंत्रण में नहीं होता है)।

एमएसडीएन प्रति Request.ServerVariables , Request.ServerVariables का उपयोग करने के लिए:

Request.ServerVariables संग्रह

ServerVariables संग्रह पूर्व निर्धारित पर्यावरण चर के मानों को पुनर्प्राप्त करता है और हेडर जानकारी का अनुरोध करता है।

अनुरोध। हेडर संपत्ति

HTTP शीर्षलेखों का संग्रह प्राप्त करता है।

Request.Headers से बेहतर विकल्प है, Request.ServerVariables के बाद से। Request.ServerVariables में सभी पर्यावरण चर के साथ-साथ शीर्षलेख भी शामिल हैं, जहां Request.Headers । हेडर एक बहुत छोटी सूची है जिसमें केवल शीर्षलेख होते हैं।

इसलिए सबसे अच्छा समाधान है Request.Headers को सीधे पढ़ने के लिए Request.HeadersRequest.Headers संग्रह का उपयोग करना। यदि आप इसे किसी रूप में प्रदर्शित करने जा रहे हैं, तो HTML एन्कोडिंग मान के बारे में माइक्रोसॉफ्ट की चेतावनियों पर ध्यान दें।


Request.UrlReferrer प्रॉपर्टी का उपयोग करें।

दृश्यों के नीचे यह केवल ServerVariables("HTTP_REFERER") संपत्ति की जांच कर रहा है।


इस तरह: UrlReferrer

Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();

मैं नेट कोर 2 एमवीसी का उपयोग कर रहा हूं, यह मेरे लिए काम करता है (पूर्वावलोकन पृष्ठ प्राप्त करने के लिए):

HttpContext.Request.Headers["Referer"];

चूंकि Google आपको C# Web API Referrer खोज करते समय इस पोस्ट पर ले जाता है, इसलिए यह सौदा है: Web API सामान्य MVC Request से एक अलग प्रकार के Request का उपयोग करता है जिसे HttpRequestMessage कहा जाता है जिसमें UrlReferrer शामिल नहीं है। चूंकि एक सामान्य Web API अनुरोध में यह जानकारी शामिल नहीं है, यदि आपको वास्तव में इसकी आवश्यकता है, तो आपके पास अपने क्लाइंट को शामिल करने के तरीके से बाहर निकलना होगा। यद्यपि आप इसे अपने API Object का हिस्सा बना सकते हैं, Headers का उपयोग करने का एक बेहतर तरीका है।

सबसे पहले, आप UrlReferrer() विधि प्रदान करने के लिए HttpRequestMessage का विस्तार कर सकते हैं:

public static string UrlReferrer(this HttpRequestMessage request)
{
    return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}

फिर आपके क्लाइंट को Referrer Header को उनके API Request पर सेट करने की आवश्यकता है:

// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);

और अब Web API Request में रेफरर डेटा शामिल है जिसे आप अपने Web API से इस तरह एक्सेस कर सकते हैं:

Request.UrlReferrer();

string referrer = HttpContext.Current.Request.UrlReferrer.ToString();






http-referer