آشنایی با RFC 9110: HTTP Semantics و هدر Referer

understanding rfc 9110 http semantics and referer header
20 آبان 1403

در دنیای شبکه و وب، پروتکل HTTP یکی از ستون‌های اصلی ارتباطات بین سرور و کلاینت است. یکی از مفاهیم کلیدی در HTTP، سرایندها (headers) هستند که اطلاعات خاصی را درباره درخواست‌ها و پاسخ‌ها فراهم می‌کنند. در این میان، هدر Referer یکی از هدرهای مهم است که توسط مرورگر ارسال می‌شود. این هدر به سرور مقصد می‌گوید درخواست از کدام صفحه منبع (Referrer) آمده است.

استفاده از هدر Referer برای تحلیل رفتار کاربران در سایت‌ها بسیار کاربردی است. با کمک این هدر می‌توانید بفهمید کاربر از کدام صفحه به شما مراجعه کرده است، که می‌تواند در بهینه‌سازی سایت و بهبود تجربه‌ی کاربری بسیار مفید باشد. البته در نظر داشته باشید که برخی مرورگرها و افزونه‌ها برای حفاظت از حریم خصوصی کاربران، این هدر را تغییر داده یا حذف می‌کنند.

ممکن است بپرسید چرا نام این هدر به شکل «Referer» نوشته شده است در حالی که به نظر می‌رسد در املای آن خطایی وجود دارد. جالب است بدانید این موضوع به یک خطای تایپی در نسخه‌های اولیه پروتکل بازمی‌گردد که به مرور به یک استاندارد بدل شد.

موضوع دیگری که باید در نظر بگیرید، امنیت استفاده از هدر Referer است. این هدر ممکن است در مواردی باعث درز اطلاعات حساس شود. برای مثال، اگر اطلاعات حساس به‌طور ناخواسته در URL قرار گرفته باشد، هدر Referer این اطلاعات را به سایت مقصد منتقل خواهد کرد.

نمونه کد هدایت Referer


GET /path/to/resource HTTP/1.1
Host: example.com
Referer: https://www.origin.com/source-page
...

توضیح خط به خط کد

GET /path/to/resource HTTP/1.1
در این خط، نوع درخواست HTTP مشخص می‌شود، که در این مورد از نوع GET است. کلاینت قصد دارد به یک منبع مشخص به آدرس داده شده دسترسی پیدا کند.
Host: example.com
این خط نشان می‌دهد که درخواست برای دامنه example.com ارسال شده است.
Referer: https://www.origin.com/source-page
این هدر به سرور مقصد اعلام می‌کند که درخواست از کدام صفحه منبع آمده است و در این مثال صفحه مبدا، صفحه‌ای در دامنه origin.com است.
...

سوالات متداول

؟

چرا هدر Referer به این شکل نوشته می‌شود؟

؟

چگونه می‌توان از هدر Referer برای بهینه‌سازی سایت استفاده کرد؟

؟

آیا هدر Referer همیشه ارسال می‌شود؟

؟

آیا هدر Referer می‌تواند نشتی اطلاعات ایجاد کند؟