मैं ASP.Net ( C # ) में ब्राउज़र का HTTP रेफ़रर प्राप्त करने का एक त्वरित, आसान और विश्वसनीय तरीका ढूंढ रहा हूं । मैं जानता हूँ कि HTTP संदर्भ में ही अविश्वसनीय है, लेकिन मैं रेफरर हो रही है, तो इसके बारे में एक विश्वसनीय तरीका चाहते हैं है वर्तमान।
मैं ASP.Net ( C # ) में ब्राउज़र का HTTP रेफ़रर प्राप्त करने का एक त्वरित, आसान और विश्वसनीय तरीका ढूंढ रहा हूं । मैं जानता हूँ कि HTTP संदर्भ में ही अविश्वसनीय है, लेकिन मैं रेफरर हो रही है, तो इसके बारे में एक विश्वसनीय तरीका चाहते हैं है वर्तमान।
जवाबों:
आप वर्तमान अनुरोध की UrlReferrer संपत्ति का उपयोग कर सकते हैं :
Request.UrlReferrer
यह रिफ़रर HTTP हेडर को उस अनुरोध से पढ़ेगा जो क्लाइंट (उपयोगकर्ता एजेंट) द्वारा आपूर्ति की जा सकती है या नहीं।
Request.UrlReferrerसर्वर साइड पोस्टबैक के बाद उपयोग कर रहे हैं तो सावधान रहें । बेशक Request.UrlReferrerअब उस पृष्ठ का मूल्य होगा जिसे आप वापस पोस्ट कर रहे हैं। ज्यादातर मामलों में, लोगों को पिछले पृष्ठ की आवश्यकता होती है। इस मामले में, सुनिश्चित करें कि जब आप पृष्ठ को पहले लोड करते हैं, तो आप पिछले पृष्ठ को स्टोरेज चर कह रहे हैं। और फिर जब आप इस चर का उपयोग करते हैं तो इसका पिछला पृष्ठ आपके पास आता है। उदाहरण के लिए, asp.net में पृष्ठ लोड घटना आप कर सकते हैं:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Request.UrlReferrerसंपत्ति का उपयोग करें ।
दृश्यों के नीचे यह सिर्फ ServerVariables("HTTP_REFERER")संपत्ति की जाँच कर रहा है।
UrlReferrerएक साधारण कॉल की तुलना में बहुत अधिक हैServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]एक स्ट्रिंग लौटाता है , जबकि Request.UrlReferrerएक उड़ी लौटता है ।
Request.Headers["Referer"]
Request.UrlRefererसंपत्ति एक फेंक होगा System.UriFormatExceptionयदि संदर्भित HTTP हेडर विकृत है (जो भी हो सकता है, क्योंकि यह आम तौर पर आपके नियंत्रण में नहीं है)।Request.ServerVariablesMSDN के अनुसार उपयोग करने के लिए :
Request.ServerVariables संग्रह
ServerVariables संग्रह पूर्वनिर्धारित परिवेश चर के मानों को पुनः प्राप्त करता है और शीर्ष लेख की जानकारी का अनुरोध करता है।
अनुरोध
HTTP हेडर का एक संग्रह हो जाता है।
Request.Headersएक बेहतर विकल्प है Request.ServerVariables, क्योंकि Request.ServerVariablesइसमें सभी पर्यावरण चर और हेडर शामिल हैं, जहां Request.Headersएक बहुत छोटी सूची है जिसमें केवल हेडर शामिल हैं।
तो सबसे अच्छा उपाय है Request.Headersकि मूल्य को सीधे पढ़ने के लिए संग्रह का उपयोग करें । HTML के बारे में Microsoft की चेतावनियों को ध्यान में रखें यदि आप इसे एक फॉर्म पर प्रदर्शित करने जा रहे हैं, तो मान को एन्कोडिंग करें।
Refererहेडर को HTTP_REFERRERसर्वर वेरिएबल की तुलना में अलग तरीके से लिखा गया है।
इस तरह: HttpRequest.UrlReferrer संपत्ति
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
चूंकि Google आपको C# Web API Referrerयहां इस सौदे के लिए खोज करते समय इस पद पर ले जाता है : सामान्य से Web APIएक अलग प्रकार का उपयोग करता है जिसे बुलाया नहीं जाता है । चूंकि एक सामान्य अनुरोध में यह जानकारी शामिल नहीं है, अगर आपको वास्तव में इसकी आवश्यकता है, तो आपको अपने ग्राहकों को इसे शामिल करने के लिए अपने रास्ते से बाहर जाना होगा। यद्यपि आप इसे अपना हिस्सा बना सकते हैं , लेकिन बेहतर तरीका यह है कि आप इसका उपयोग करें ।RequestMVC RequestHttpRequestMessageUrlReferrerWeb APIAPI ObjectHeaders
सबसे पहले, आप HttpRequestMessageएक UrlReferrer()विधि प्रदान करने के लिए विस्तार कर सकते हैं :
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();