এএসপি.নেটে এইচটিটিপি রেফারার পাওয়া Get


103

আমি ব্রাউজারের পাবার একটি দ্রুত, সহজ এবং নির্ভরযোগ্য উপায় খুঁজছি HTTP রেফারার মধ্যে ASP.Net ( C # এর )। আমি জানি HTTP রেফারার নিজেই অবিশ্বস্ত, কিন্তু আমি রেফারার পেয়ে যদি এটি একটি নির্ভরযোগ্য উপায় চাও হয় বর্তমান।



উত্তর:


166

আপনি বর্তমান অনুরোধের urlReferrer সম্পত্তি ব্যবহার করতে পারেন :

Request.UrlReferrer

এটি অনুরোধ থেকে রেফারার এইচটিটিপি শিরোনামটি পড়বে যা ক্লায়েন্ট (ব্যবহারকারী এজেন্ট) সরবরাহ করতে পারে বা নাও করতে পারে।


8
এটি উল্লেখ করা উচিত যে এই সম্পত্তিটি একটি সিস্টেম নিক্ষেপ করবে riরিফর্ম্যাটেক্সপশন যদি রেফার এইচটিটিপি শিরোনামটি ত্রুটিযুক্ত থাকে।
নাইটওয়েল 888

1
@ ডারিন দিমিত্রভ আমি WEB API ব্যবহার করে একটি REST এপিআই তৈরি করার চেষ্টা করছি। UrlReferrer অনুরোধ বস্তুর অংশ নয়। আমার কিছু "ব্যবহার" ইত্যাদি যুক্ত করা উচিত আমি কী অনুপস্থিত? একটি ডিএলএল?
রবি

1
এটি লক্ষ্য করা উচিত যে পার্থক্যটি বানানটি সঠিক। Http শিরোনামটি ভুল বানানযুক্ত। এমএস সম্পত্তির নামে সঠিক বানান ব্যবহার করে। দুর্ভাগ্যক্রমে, দুটি মিলছে না, যা পরীক্ষার সময় কিছু লোক (আমাকে) বিভ্রান্তি সৃষ্টি করতে পারে।
জন

8
আপনি যদি Request.UrlReferrerকোনও সার্ভার সাইড পোস্টব্যাক পরে ব্যবহার করেন তবে সাবধান হন। অবশ্যই Request.UrlReferrerআপনি এখন যে পৃষ্ঠায় পোস্ট করছেন তার মান থাকবে। বেশিরভাগ ক্ষেত্রে, লোকদের পূর্ববর্তী পৃষ্ঠাটি প্রয়োজন। এই ক্ষেত্রে, পৃষ্ঠার প্রথমটি লোড হওয়ার পরে আপনি পূর্ববর্তী পৃষ্ঠাটি একটি ভিউস্টেট ভেরিয়েবল বলতে স্টোর করছেন তা নিশ্চিত করুন। এবং তারপরে আপনি যখন এই ভেরিয়েবলটি অ্যাক্সেস করবেন তখন এতে পূর্ববর্তী পৃষ্ঠাটি এসেছিল। উদাহরণস্বরূপ, এসপি নেট ফর্মগুলিতে পৃষ্ঠা লোড ইভেন্ট আপনি করতে পারেন:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
জোনএইচ

4
... এবং আপনি উদাহরণ হিসাবে ফিরে পোস্ট করার সময়, আপনি করতে পারেন:Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
JonH

20

Request.UrlReferrerসম্পত্তি ব্যবহার করুন ।

দৃশ্যের নীচে এটি কেবল ServerVariables("HTTP_REFERER")সম্পত্তি যাচাই করা হচ্ছে ।


2
সুতরাং আমি যদি ব্যবহার করি তবে এর চেয়ে আলাদা কিছু হবে না: HttpContext.Current.Request.ServerVariables ["HTTP_REFERER"]?
চক লে বাট

2
তত্ত্বের মধ্যে কোনও পার্থক্য নেই, UrlReferrerবাস্তবে আমি নিশ্চিতভাবে বলতে পারি না যেহেতু রিফ্লেক্টরগুলির সাথে একটি তাত্ক্ষণিক দৃষ্টিভঙ্গি যা সাধারণ কলের চেয়ে অনেক বেশি কাজ করেServerVariables("HTTP_REFERER")
ডায়াডিস্টিস

13
আমি আপনাকে বলতে পারি যে ServerVariables["HTTP_REFERER"]একটি স্ট্রিং প্রদান করে , যেখানে Request.UrlReferrerএকটি ইউরি প্রদান করে
চক লে বাট

19
Request.Headers["Referer"]

ব্যাখ্যা

Request.UrlRefererসম্পত্তি একটি নিক্ষেপ করা হবে System.UriFormatExceptionযদি Referer HTTP শিরোলেখ বিকৃত (যা ঘটতে পারে যেহেতু এটি সাধারণত আপনার নিয়ন্ত্রণে নয়)।

ব্যবহার হিসাবে Request.ServerVariables, প্রতি এমএসডিএন:

অনুরোধ.সভারভারিভেরিয়েবলস সংগ্রহ

সার্ভারভেরিবলগুলি সংগ্রহ পূর্বনির্ধারিত পরিবেশের ভেরিয়েবলের মানগুলি পুনরুদ্ধার করে এবং শিরোনাম সম্পর্কিত তথ্যের জন্য অনুরোধ করে।

অনুরোধ.ইহেইডার্স সম্পত্তি

এইচটিটিপি শিরোনামের সংগ্রহ পান।

Request.Headersএর চেয়ে ভাল পছন্দ Request.ServerVariables, যেহেতু Request.ServerVariablesসমস্ত পরিবেশের পরিবর্তনশীল পাশাপাশি শিরোনাম রয়েছে, যেখানে Request.Headersকেবলমাত্র শিরোনামগুলি রয়েছে এমন একটি সংক্ষিপ্ত তালিকা রয়েছে।

সুতরাং সেরা সমাধানটি হ'ল Request.Headersসংগ্রহটি সরাসরি মানটি পড়ার জন্য ব্যবহার করা। মাইক্রোসফ্টের এইচটিএমএলকে মানটি এনকোডিংয়ের বিষয়ে সতর্কতাগুলির প্রতি সতর্কতা অবলম্বন করুন যদি আপনি এটি কোনও ফর্মে প্রদর্শন করতে যাচ্ছেন তবে।


2
নোট করুন যে Refererশিরোনামটি HTTP_REFERRERসার্ভার ভেরিয়েবলের চেয়ে আলাদাভাবে বানান করা হয়েছে ।
রুডি

13

এটি পছন্দ করুন: HTTPRequest.UrlReferrer সম্পত্তি

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

2
নাল থেকে রক্ষা করার জন্য, আপনি বলতে পারেন: স্ট্রিং আসল = "" + রিকোয়েস্ট.আরলরেফারার ?? "(ডিফল্ট)"; // (ডিফল্ট) খালি স্ট্রিং হতে পারে
Sheepy

10

আমি। নেট কোর 2 এমভিসি ব্যবহার করছি, এটি আমার জন্য কাজ করেছে (পূর্বরূপ পৃষ্ঠা পেতে):

HttpContext.Request.Headers["Referer"];

9

যখন অনুসন্ধানের জন্য Google এই পোস্টে আপনি লাগে যেহেতু C# Web API Referrerএখানে চুক্তি: Web APIবিভিন্ন ধরনের ব্যবহার Requestস্বাভাবিক থেকে MVC Requestবলা HttpRequestMessageযা অন্তর্ভুক্ত নয় UrlReferrer। যেহেতু একটি সাধারণ Web APIঅনুরোধে এই তথ্য অন্তর্ভুক্ত হয় না, যদি আপনার সত্যিই এটির প্রয়োজন হয় তবে আপনার ক্লায়েন্টদের অবশ্যই এটি অন্তর্ভুক্ত করার জন্য তাদের পথ ছাড়তে হবে। যদিও আপনি এটিকে আপনার অংশ হতে পারেন API Object, তবে আরও ভাল উপায় ব্যবহার করা Headers

প্রথমত, আপনি 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();


2

কিছু সময় আপনাকে অবশ্যই এই জাতীয় লিঙ্কটি দিতে হবে

System.Web.HttpContext.Current.Request.UrlReferrer.ToString();

("বর্তমান" প্রতিষ্ঠিত না হলে বিকল্পে)


0

অন্যান্য উত্তরের সাথে সম্পর্কিত, আমি শূন্য হওয়ার জন্য শর্তের শর্ত যুক্ত করেছি।

string ComingUrl = "";
if (Request.UrlReferrer != null)
{
    ComingUrl = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
}
else
{
    ComingUrl = "Direct"; // Your code
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.