FreeToGenerate.com

يبيّن ماذا ترسل كل قيمة من قيم Referrer-Policy فعلًا، ولماذا آخر قيمة في الترويسة هي التي يستعملها متصفحك. ولا يُرفع شيء.

ترويسة في كل سطر. فالمتصفح يقرؤها قائمةً واحدة مفصولة بالفواصل، وتغلب آخر قيمة يعرفها.

جرّب واحدة:

كيف يقرأ المتصفح هذه الترويسة

  • originمعروفة، لكن تجاوزتها قيمة لاحقة
  • unsafe-urlمستعملة — وهي آخر قيمة معروفة
السياسة المستخلَصة
unsafe-url
السياسة النافذة
unsafe-url

عُرفت أكثر من قيمة. والمواصفة تقول إن الأخيرة تغلب، وذلك عين ما يجعل البديل المتدرّج يعمل: فالمتصفح القديم يقف عند القيمة التي يعرفها، والحديث يمضي إلى آخرها.

كلاهما يجب أن يكون عنوانًا كاملًا بمخطَّطه. والمخطَّط مهمّ: فهو ما يقرّر أالطلبُ من المصدر نفسه أم من مصدر آخر أم هبوطٌ إلى غير آمن.

ماذا سيرسل هذا الطلب

العلاقة
هبوط — من صفحة آمنة إلى وجهة غير آمنة
معلومات المُحيل
العنوان كاملًا بمساره واستعلامه
ترويسة Referer المُرسَلة
https://example.com/page.html

كل السياسات جنبًا إلى جنب

السياسةالمصدر نفسهمصدر آخرهبوط — من صفحة آمنة إلى وجهة غير آمنة
no-referrerلا شيء البتةلا شيء البتةلا شيء البتة
no-referrer-when-downgradeالعنوان كاملًا بمساره واستعلامهالعنوان كاملًا بمساره واستعلامهلا شيء البتة
same-originالعنوان كاملًا بمساره واستعلامهلا شيء البتةلا شيء البتة
originالمصدر وحدهالمصدر وحدهالمصدر وحده
strict-originالمصدر وحدهالمصدر وحدهلا شيء البتة
origin-when-cross-originالعنوان كاملًا بمساره واستعلامهالمصدر وحدهالمصدر وحده
strict-origin-when-cross-originالعنوان كاملًا بمساره واستعلامهالمصدر وحدهلا شيء البتة
unsafe-urlالعنوان كاملًا بمساره واستعلامهالعنوان كاملًا بمساره واستعلامهالعنوان كاملًا بمساره واستعلامه

كل صفّ منقول من الجملة التي تعرّف تلك السياسة في المواصفة. والصفّ النافذ مميَّز.

كل هذا يجري في متصفحك. ولا يُرفع أي عنوان ولا أي ترويسة.

متوفر أيضًا بلغات أخرى: English · Español · Português · Français

‏Referrer-Policy: مقارنة كل القيم، والقاعدة التي لا يذكرها أحد

اعرف أي سياسة نافذة، وماذا سيضع طلبٌ بعينه في ترويسة Referer فعلًا، ولماذا إرسال قيمتين أسلوبٌ موثَّق.

ما الذي تفعله ترويسة Referrer-Policy؟

حين يتبع المتصفح رابطًا أو يجلب موردًا فإنه يخبر الوجهةَ عادةً من أين جاء الطلب، في ترويسة اسمها Referer. وReferrer-Policy هي كيف يتحكم الموقع في مقدار ما يمنحه من ذلك: العنوان كاملًا بمساره واستعلامه، أو المصدر وحده، أو لا شيء. والقيم ثماني، وتعرّف المواصفة كلًّا منها أمام ثلاث حالات: طلبٌ إلى المصدر نفسه، وطلبٌ إلى مصدر آخر، وطلبٌ يغادر صفحةً آمنة إلى وجهة غير آمنة.

وإن لم ترسل ترويسةً أصلًا فالنافذ هو strict-origin-when-cross-origin. وهو يرسل العنوان كاملًا داخل موقعك، والمصدر وحده عند مغادرته، ولا شيء حين تهبط الوجهة إلى HTTP مجرّد. وهو افتراضٌ رشيد يحسن معرفته، لأن الترويسة التي يعجز المتصفح عن قراءتها تتركك عند هذا بالضبط ولا شيء غيره.

وثمة تفصيل تشير إليه المواصفة نفسها عن اسمها: فالترويسة لا تكرّر الخطأ الإملائي الشهير. فترويسة الطلب هي Referer براء واحدة، وهو خطأ مطبعي قديم بما يكفي ليصير دائمًا. أما ترويسة الاستجابة التي تتحكم فيها فهي Referrer-Policy، مكتوبةً على الصواب. وقلبُ الاثنتين طريقةٌ شائعة لكتابة ترويسة لا تفعل شيئًا في صمت.

كيف تستعملها

  1. الصق ترويستك. واحدة في كل سطر إن كنت ترسل أكثر من واحدة — فالمتصفح يقرأ عدة ترويسات Referrer-Policy قائمةً واحدة مفصولة بالفواصل. واللوحة أدناه تعرض كل قيمة وتقول أيها سيستعمل فعلًا.
  2. ضع العنوانين. الصفحة التي تضع الرابط، والوجهة. وكلاهما يحتاج مخطَّطًا، لأن المخطَّط هو ما يقرّر أالطلبُ من المصدر نفسه أم من مصدر آخر أم هبوط، وتلك الثلاث هي كل ما تفرّق فيه أي سياسة من هذه السياسات.
  3. اقرأ سطر Referer. فهو يعرض الترويسة التي سيحملها الطلب بالضبط، أو يقول إنه لا تُرسَل ترويسة. والجدول في الأسفل يضع السياسات الثماني جنبًا إلى جنب، والنافذة منها مميَّزة.

لماذا تغلب آخر قيمة، وفيمَ يفيد ذلك

هذا هو الجزء الذي يوقع الناس، وهو مكتوب بوضوح. تقول المواصفة إن قيم السياسة المجهولة تُهمَل، وإنه حين تحدّد مصادر متعددة سياسةَ إحالة فإن قيمة الأخيرة هي المستعملة. لا الأولى. وخوارزمية التحليل ثلاث خطوات: ابدأ بلا شيء، ثم لكل رمز في الترويسة، إن كان سياسةً تعرفها فاجعل السياسة هي إياه. فآخر ما عرفتَه هو ما تستقر عليه.

وذلك يقلب البديهة المعتادة. فقيمة الترويسة التي تبدو قائمةً تعني عادةً بدائل مرتّبة بحسب الأفضلية، والطريقة الطبيعية لكتابة محلّل أن تأخذ أول ما تفهمه ثم تقف. وهنا يجب أن تمضي، والمحلّل الذي يقف باكرًا يعطي الجواب الخطأ في مثال المواصفة نفسها.

والعلة هي النشر. فالمواصفة تعالج الحالة بنفسها: أرسل origin ثم unsafe-url، فالمتصفح الأقدم من أن يعرف unsafe-url يهملها ويستعمل origin، أما الحديث فيمضي إلى الآخر ويستعمل unsafe-url. فـ«Referrer-Policy: origin, unsafe-url» ليست خطأً ولا سطرًا مكرّرًا — بل هي الطريقة الموثَّقة لتبنّي قيمة جديدة بلا التخلي عن العملاء القدامى. والقواعد مبنيّة لذلك: فالمواصفة تجيز الرمز المجهول تحديدًا كي لا يعجز المتصفح عن تحليل الترويسة كلها حين يصادف واحدًا.

وللقاعدة نفسها حدٌّ أمضى. فإن لم يُعرَف شيء من ترويستك — خطأ مطبعي، أو قيمة من مقال لم تُشحَن قط، أو اسم سياسة فيه شرطة سفلية — بقي المتصفح عند السلسلة الفارغة ورجع إلى افتراضه. فالترويسة لم تفعل شيئًا، وليس في الاستجابة ما يخبرك بذلك. وهذا أول ما تبلّغ به اللوحة أعلاه.

ماذا ترسل كل سياسة فعلًا

جدول الثماني في الثلاث في هذه الصفحة منقولٌ من الجملة التي تعرّف كل سياسة في المواصفة، لا مجموعًا من الذاكرة ولا من جداول الآخرين. وثمة صفّان يستحقان قراءتين، لأنهما أكثر ما يُخلَط بينه.

فـorigin وstrict-origin متشابهتان إلى حدّ بعيد — كلتاهما لا ترسل إلا المصدر — وتفترقان في مربّع واحد بالضبط. فـorigin ترسله إلى كل مكان، بما في ذلك HTTP المجرّد؛ وstrict-origin تمسك عنه في ذلك الهبوط. والمواصفة صريحة في السبب: تلاحظ أن origin تتيح لمصدر المُحيلين على HTTPS أن يسري في الشبكة ضمن طلبات HTTP غير مشفّرة، وأن strict-origin تعالج هذا القلق. ويتكرر الزوج نفسه درجةً أعلى: فـorigin-when-cross-origin وstrict-origin-when-cross-origin لا تفترقان إلا في عمود الهبوط.

وثمة حالة تفاجئ من يتصور المصادر مسألةَ أسماء نطاقات. فالمصدر يشمل المخطَّط، فالانتقال من http إلى https على المضيف نفسه طلبٌ إلى مصدر آخر لا إلى المصدر نفسه — والمواصفة تذكر ترقيات البروتوكول صراحةً. والمنفذ المختلف يفعل الشيء ذاته. فإن تصرّفت سياسةٌ تصرفًا غريبًا في طلب لا يغادر نطاقك فهذا سببه عادةً.

أما unsafe-url فتعني ما تقول. وتضيف المواصفة ملحوظةً تكاد تكون اعتذارًا: اسم السياسة لا يكذب، فهي غير آمنة، وستسرّب مصادر ومسارات موارد آمنة إلى مصادر غير آمنة. ومثالها يستعمل مستندًا اسمه sekrit.html لسبب.

ما لا تخبرك به هذه الأداة

هذه تستخرج معنى السياسة. ولا تعرف ما يرسله خادمك. فالمتصفح لا يستطيع أن يقرأ لك ترويسات استجابة موقع آخر، فالترويسة في الصندوق هي التي كتبتَها أنت لا التي في الإنتاج — تحقّق من تلك بلوحة الشبكة في متصفحك أو بطلب من سطر الأوامر.

وتصنيفُ الوجهة آمنةً أو غير آمنة تبسيطٌ يحسن قوله. فالمواصفة تحيل إلى معيار آخر في ما يُعدّ عنوانًا جدير بالثقة احتمالًا، وتلك الخوارزمية أوسع مما تطبّقه هذه الصفحة: فهنا تُعدّ https وwss وfile جديرةً بالثقة، ومعها localhost وعناوين الاسترجاع، وما عداها لا. وذلك يغطي كل أمثلة المواصفة وكل ما يُرجَّح أن تكتبه، لكن مخطَّطًا يسجّله متصفح أو تطبيق محزوم جديرًا بالثقة سيُحكَم عليه خطأً.

وسياسةُ الصفحة ليست وحدها في الميدان كذلك. فالرابط الواحد يستطيع تجاوزها بخاصية referrerpolicy، وrel=noreferrer يزيل المُحيل كله، والإطار المضمّن له أن يضع سياسته، وإعادةُ التوجيه قد تغيّر السياسة في منتصف الطلب. وهذه الصفحة تجيب عن السؤال لسياسة واحدة وزوج عناوين واحد، وهو ما تدور عليه الترويسة؛ وما بقي قراراتٌ لكل عنصر تُتّخذ في ترميزك.

وأخيرًا، ليس شيء من هذا ضمانًا للخصوصية. فكتمُ ترويسة Referer يوقف تسريبًا بعينه؛ ولا يفعل شيئًا حيال عنوان مرّرته في سلسلة استعلام، ولا سكربت يبلّغ الموضع بنفسه، ولا ما تستنتجه الوجهة من الطلب بطرق أخرى. فهو ضابط مفيد لا ستار.

لماذا هي مجانية؟

قراءة ترويسة ومقارنة عنوانين عملُ نصّ يجري في متصفحك. ولا خادم في الأمر، فلا شيء يُحاسَب عليه ولا حساب يُنشأ.

ولا يُرفع شيء ولا يُحفظ شيء. أعد تحميل الصفحة تجدها قد نسيت العنوانين اللذين كتبتهما.