در HTTP ، " Referer " (یک غلط املایی از " Referrer " [1] ) یک فیلد هدر HTTP اختیاری است که آدرس صفحه وب (یعنی URI یا IRI ) را که منبع از آن درخواست شده است، مشخص می کند. با بررسی ارجاع دهنده، سرور ارائه دهنده صفحه وب جدید می تواند ببیند که درخواست از کجا منشأ گرفته است.
در رایجترین حالت، این بدان معناست که وقتی کاربر روی یک لینک در یک مرورگر وب کلیک میکند و باعث میشود مرورگر درخواستی را به سروری که صفحه وب مقصد را نگه میدارد ارسال کند، درخواست ممکن است شامل فیلد Referer باشد که آخرین صفحه را نشان میدهد. کاربر روشن بود (کسی که روی پیوند کلیک کرد).
وبسایتها و سرورهای وب محتوای فیلد Referer دریافتشده را ثبت میکنند تا صفحه وب را که کاربر از آن پیوندی را دنبال کرده، برای اهداف تبلیغاتی یا آماری شناسایی کند. [2] این امر مستلزم از دست دادن حریم خصوصی برای کاربر است و ممکن است خطر امنیتی ایجاد کند . [3] برای کاهش خطرات امنیتی، مرورگرها به طور پیوسته میزان اطلاعات ارسال شده در Referer را کاهش می دهند. از مارس 2021، بهطور پیشفرض Chrome ، [4] Edge مبتنی بر کروم ، فایرفاکس ، [5] سافاری [6] بهطور پیشفرض فقط مبدا را در درخواستهای متقاطع ارسال میکند و همه چیز را به جز نام دامنه حذف میکند.
غلط املایی ارجاع دهنده در پیشنهاد اولیه توسط دانشمند کامپیوتر فیلیپ هالام-بیکر برای گنجاندن فیلد سرصفحه "مرجع" در مشخصات HTTP معرفی شد . [7] [8] این غلط املایی در زمان (مه 1996) ادغام آن در سند استاندارد درخواست برای نظرات RFC 1945 [9] (که منعکس کننده استفاده رایج از پروتکل به نام "HTTP/1.0 است" مشخص شد. " " در آن زمان)؛ روی فیلدینگ یکی از نویسندگان سند در مارس 1995 اظهار داشت که "هیچکدام (ارجاع دهنده یا ارجاع دهنده) توسط املای استاندارد یونیکس آن دوره قابل درک نیستند. [10] از آن زمان "ارجاع" به یک املای پرکاربرد در صنعت هنگام بحث در مورد ارجاع دهنده های HTTP تبدیل شده است. استفاده از غلط املایی جهانی نیست، اگرچه، زیرا املای صحیح "ارجاع" در برخی مشخصات وب مانند Referrer-Policy
سرصفحه HTTP یا مدل شی سند استفاده می شود . [3]
هنگام بازدید از یک صفحه وب، ارجاع دهنده یا صفحه ارجاع دهنده URL صفحه وب قبلی است که پیوندی از آن دنبال شده است.
به طور کلی تر، ارجاع دهنده نشانی اینترنتی یک مورد قبلی است که منجر به این درخواست شده است. به عنوان مثال، ارجاع دهنده یک تصویر به طور کلی صفحه HTML است که در آن قرار است نمایش داده شود. فیلد ارجاع دهنده بخشی اختیاری از درخواست HTTP است که توسط مرورگر وب به سرور وب ارسال می شود. [11]
بسیاری از وب سایت ها ارجاع دهندگان را به عنوان بخشی از تلاش خود برای ردیابی کاربران خود ثبت می کنند . اکثر نرم افزارهای تحلیل لاگ وب می توانند این اطلاعات را پردازش کنند. از آنجایی که اطلاعات ارجاع دهنده می تواند حریم خصوصی را نقض کند ، برخی از مرورگرهای وب به کاربر اجازه می دهند تا ارسال اطلاعات ارجاع دهنده را غیرفعال کند. [12] برخی از نرمافزارهای پراکسی و فایروال نیز اطلاعات ارجاعدهنده را فیلتر میکنند تا از افشای مکان وبسایتهای غیر عمومی جلوگیری کنند. این می تواند به نوبه خود باعث ایجاد مشکلاتی شود: برخی از سرورهای وب قسمت هایی از وب سایت خود را برای مرورگرهای وب که اطلاعات ارجاع دهنده مناسبی را ارسال نمی کنند مسدود می کنند تا از پیوند عمیق یا استفاده غیرمجاز از تصاویر ( سرقت پهنای باند ) جلوگیری کنند. برخی از نرم افزارهای پراکسی این توانایی را دارند که آدرس سطح بالای وب سایت مورد نظر را به عنوان ارجاع دهند، که این مشکلات را کاهش می دهد، اما همچنان در برخی موارد می تواند صفحه وب آخرین بازدید شده کاربر را فاش کند.
بسیاری از وبلاگها اطلاعات ارجاعدهنده را منتشر میکنند تا به افرادی که به آنها لینک میدهند پیوند بزنند و از این رو گفتگو را گسترش دهند. این به نوبه خود منجر به افزایش اسپم ارجاع دهنده شده است : ارسال اطلاعات ارجاع دهنده جعلی به منظور محبوبیت وب سایت هرزنامه.
دسترسی به اطلاعات ارجاع دهنده در سمت کلاینت با استفاده از document.referrer در جاوا اسکریپت امکان پذیر است . [13] این می تواند برای مثال برای شخصی سازی یک صفحه وب بر اساس جستجوی موتور جستجوی کاربر استفاده شود. با این حال، فیلد ارجاع دهنده همیشه شامل کلمات کلیدی جستجو نمی شود، مانند زمانی که از جستجوی Google با HTTPS استفاده می کنید. [14]
اکثر وب سرورها گزارش تمام ترافیک را حفظ می کنند و ارجاع دهنده HTTP ارسال شده توسط مرورگر وب را برای هر درخواست ثبت می کنند. این باعث ایجاد نگرانیهای مربوط به حریم خصوصی میشود، و در نتیجه، تعدادی سیستم برای جلوگیری از ارسال URL ارجاع واقعی به سرورهای وب ایجاد شدهاند. این سیستم ها یا با خالی کردن قسمت ارجاع دهنده یا با جایگزین کردن آن با داده های نادرست کار می کنند. به طور کلی، مجموعههای امنیت اینترنت دادههای ارجاعدهنده را خالی میکنند، در حالی که سرورهای مبتنی بر وب آن را با یک URL نادرست، معمولاً متعلق به خودشان، جایگزین میکنند. این مشکل اسپم ارجاع دهنده را افزایش می دهد. جزئیات فنی هر دو روش نسبتاً سازگار است - برنامههای نرمافزاری به عنوان یک سرور پروکسی عمل میکنند و درخواست HTTP را دستکاری میکنند، در حالی که روشهای مبتنی بر وب، وبسایتها را در فریمهایی بارگذاری میکنند و باعث میشوند مرورگر وب URL ارجاعدهنده آدرس وبسایت آنها را ارسال کند. برخی از مرورگرهای وب به کاربران خود این امکان را می دهند که فیلدهای ارجاع دهنده را در هدر درخواست خاموش کنند. [12]
اکثر مرورگرهای وب زمانی که به آنها دستور داده می شود با استفاده از قسمت "Refresh" تغییر مسیر دهند، فیلد ارجاع دهنده را ارسال نمی کنند. این شامل برخی از نسخه های Opera و بسیاری از مرورگرهای وب تلفن همراه نمی شود . با این حال، این روش تغییر مسیر توسط کنسرسیوم وب جهانی (W3C) منع شده است. [15]
اگر یک وبسایت از طریق اتصال HTTP Secure (HTTPS) قابل دسترسی باشد و پیوند به جایی به جز مکان امن دیگری اشاره کند، فیلد ارجاعدهنده ارسال نمیشود. [11]
استاندارد HTML5 از ویژگی/مقدار پشتیبانی میکند rel="noreferrer"
، که به عامل کاربر دستور میدهد ارجاعدهنده ارسال نکند. [16]
یکی دیگر از روشهای پنهان کردن ارجاعدهنده، تبدیل URL لینک اصلی به یک URL مبتنی بر طرح داده URI است که حاوی صفحه کوچک HTML با یک متا تازهسازی به URL اصلی است. هنگامی که کاربر از data:
صفحه هدایت می شود، ارجاع دهنده اصلی پنهان می شود.
استاندارد خط مشی امنیت محتوا نسخه 1.1 یک دستورالعمل ارجاع دهنده جدید را معرفی کرد که اجازه می دهد تا کنترل بیشتری بر رفتار مرورگر در رابطه با هدر ارجاع دهنده داشته باشید. به طور خاص به مدیر وب سایت اجازه می دهد تا به مرورگر دستور دهد که ارجاع دهنده را به هیچ وجه مسدود نکند، آن را فقط در هنگام حرکت با همان مبدا و غیره آشکار کند. [17]