HTTP وHTTPS

بروتوكول نقل النص التشعبي (HTTP) هو مجموعة القواعد التي يتبادل بها العميل والخادم الرسائل على الويب. يرسل العميل طلباً (request) مثل GET /orders/1042، فيعيد الخادم استجابة (response) مثل 200 OK ومعها بيانات الطلبية بصيغة JSON. وكل صفحة وصورة واستدعاء API وإرسال نموذج تختبره ينتقل في صورة طلب واستجابة من هذا النوع.

أما HTTPS فهو HTTP نفسه مرسَلاً داخل اتصال TLS. يشفّر TLS الرسائل، ويكشف أي تغيير يطرأ عليها في الطريق، ويستخدم شهادة الخادم ليثبت أن العميل يتحدث فعلاً إلى shop.example.com الحقيقي. وقد بيّن درس «كيف تعمل المتصفحات» أين يحدث ذلك أثناء تحميل الصفحة؛ أما هذا الدرس فيشرح ما يَعِد به كل بروتوكول وما لا يَعِد به.

لماذا يهم

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

وبالنسبة للمستخدمين، يحمي HTTPS كلمات المرور وملفات تعريف الارتباط الخاصة بالجلسة والبيانات الشخصية من أي طرف على مسار الشبكة، مثل مشغّل شبكة Wi-Fi عامة. وبالنسبة للمختبِرين، فإن HTTP هو الطبقة التي يقوم عليها كل اختبار للويب ولواجهات API.

العميل والخادم: تبادل الطلب والاستجابة

في HTTP يبدأ العميل الكلام دائماً. فهو يرسل طلباً يتكوّن من طريقة (method) مثل GET أو POST، وهدف مثل /orders/1042، وحقول ترويسة (headers)، ومحتوى (body) أحياناً. والخادم ينتظر الطلبات ويجيب عن كل طلب باستجابة: رمز حالة، وحقول ترويسة، ومحتوى في أغلب الأحيان.

العميل والخادم دوران لا جهازان. فالمتصفح وتطبيق الجوال وcurl واختباراتك المؤتمتة كلها عملاء، وكذلك خدمة إتمام الشراء حين تستدعي واجهة API للدفع، مع أنها خادم بالنسبة لمستخدميها. وبين الطرفين يوجد غالباً وسطاء (intermediaries): الوكلاء (proxies) وموازنات الأحمال (load balancers) وبوابات API وشبكات توصيل المحتوى (CDN)، وهي تمرّر الطلب أو تجيب عنه من ذاكرة مؤقتة. ويسمّي RFC 9110 الخادم الذي يملك المورد الخادمَ الأصلي (origin server)، والاستجابة التي تراها ليست دائماً من إنتاجه.

GET /orders/1042 HTTP/1.1
Host: shop.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{"id": 1042, "status": "shipped", "items": 3}

جرّبها: محلّل عناوين URL جرّبها: فاحص طلبات HTTP

عديم الحالة: كل طلب قائم بذاته

يعرّف RFC 9110 بروتوكول HTTP بأنه عديم الحالة (stateless): يمكن فهم كل طلب بمعزل عن غيره، ولا شيء في البروتوكول يربط طلبك الثالث بطلبك الأول. وهذا ما يسمح للموقع بتوزيع الطلبات على خوادم كثيرة خلف موازن أحمال.

والتطبيقات التي تحتاج إلى استمرارية، كمستخدم مسجَّل الدخول أو سلة مشتريات أو نموذج من عدة خطوات، تبنيها فوق HTTP: يرسل العميل معرّفاً مع كل طلب، غالباً في ملف تعريف ارتباط (cookie) أو في ترويسة Authorization، ويبحث الخادم عن الحالة المطابقة في مخزنه الخاص. وهذا يعطي المختبِر أفكار اختبار ملموسة:

  • التحديث والرابط المشارَك وعلامة التبويب الثانية، كلٌّ منها يرسل طلباً جديداً لا يربطه بالخطوات السابقة إلا ما يحمله، كملف تعريف الارتباط. افتح الخطوة الثالثة من إتمام الشراء مباشرةً في نافذة خاصة: يجب أن يوجّهك التطبيق إلى تسجيل الدخول أو يعيد بناء الخطوة، لا أن ينهار أو يعرض بيانات مستخدم آخر.
  • إذا احتفظت نسخة من الخادم ببيانات الجلسة في ذاكرتها الخاصة، فقد يصل الطلب التالي إلى نسخة لم تتعامل معك من قبل، فيفقد المستخدمون جلستهم أو سلتهم عشوائياً. كرّر السيناريو مرات كثيرة، واسأل كيف تُخزَّن الجلسات.
  • يجب أن يتحقق الخادم في كل طلب من هوية مُرسِله ومما يحق لهذا المستخدم فعله، ولا يجوز أن يعتمد على طلب سابق. في بيئة الاختبار، أعد إرسال طلب من حساب الاختبار الخاص بك دون ملف تعريف الارتباط أو الرمز المميز (token): يجب أن يرفضه الخادم.
  • لا يستطيع الخادم التمييز بين نقرة مزدوجة وطلبيتين حقيقيتين. أرسل النموذج مرتين بسرعة واحسب عدد الطلبيات المنشأة؛ فمنع التكرار مسؤولية التطبيق لا مسؤولية HTTP.

HTTPS: بروتوكول HTTP نفسه داخل TLS

العنوان الذي يبدأ بـ https:// يعني أن رسائل HTTP تنتقل داخل اتصال TLS (أمن طبقة النقل، Transport Layer Security)، على المنفذ 443 افتراضياً بدلاً من 80. والرسائل نفسها لا تتغيّر؛ لكن TLS يضيف ثلاث ضمانات: السرية (لا يستطيع أحد على المسار قراءتها)، والسلامة (تُكتشف أي بايتات معدَّلة ويفشل الاتصال)، ومصادقة الخادم (هو فعلاً المضيف الوارد في العنوان). ويمكن للعميل أيضاً إثبات هويته بشهادة خاصة به، وهو ما تشترطه بعض واجهات API بين الخدمات؛ ويسمّى ذلك TLS المتبادل (mutual TLS).

قبل أول بايت من HTTP يجري الطرفان مصافحة TLS (TLS handshake). وتعتمد المصافحة على زوج مفاتيح: مفتاح عام (public key) يمكن لأي أحد أن يراه، ومفتاح خاص (private key) لا يحتفظ به إلا الخادم. والبيانات الموقّعة بالمفتاح الخاص يمكن التحقق منها بالمفتاح العام، فالتوقيع الصحيح يثبت أن صاحبه يملك المفتاح الخاص. وفي ⁦TLS 1.3⁩ تستغرق المصافحة رحلة ذهاب وإياب واحدة: يقترح العميل المفاتيح ويسمّي المضيف الذي يريده؛ فيرد الخادم باختياراته وشهادته وتوقيع يثبت امتلاكه المفتاح الخاص للشهادة؛ ثم يشتق الطرفان مفاتيح الجلسة نفسها، وعندها فقط يُرسَل الطلب مشفّراً.

الشهادة تربط مفتاحاً عاماً بأسماء مضيفين مدرجة في حقل الاسم البديل للموضوع (Subject Alternative Name)، وتوقّعها جهة إصدار شهادات (CA). ويرسل الخادم شهادته ومعها الشهادات الوسيطة التي تصلها بشهادة جذرية يثق بها العميل مسبقاً، لأنها مخزّنة في نظام التشغيل أو المتصفح. ويتحقق العميل مما يلي:

  • الاسم: يجب أن يكون المضيف مدرجاً. فحرف البدل (wildcard) *.example.com يغطي shop.example.com، لكنه لا يغطي example.com ولا api.shop.example.com.
  • التواريخ: يجب أن تكون الشهادة ضمن مدة صلاحيتها. والشهادة المنتهية توقف جميع العملاء دفعة واحدة.
  • السلسلة: يجب أن تكون كل حلقة حتى الشهادة الجذرية الموثوقة موجودة. وغياب الشهادة الوسيطة عيب شائع: قد يسدّ متصفح سطح المكتب الفجوة بنفسه، بينما تفشل التطبيقات والسكربتات.
  • ما يبقى مكشوفاً: يرى المراقب على المسار عنوان IP وتوقيت الرسائل وأحجامها، واسم المضيف في الغالب، لكنه لا يرى المسار ولا الاستعلام ولا الترويسات ولا ملفات تعريف الارتباط ولا المحتوى.
  • ما لا يغطيه HTTPS: فهو يحمي البيانات أثناء انتقالها فقط. والخادم يرى كل شيء، وثغرات التحكم في الوصول أو الحقن تعمل عبر الاتصال المشفّر بالسهولة نفسها.
يرسل HTTP غير المشفّر الطلب مقروءاً لأي طرف على المسار؛ أما HTTPS فيجري أولاً مصافحة TLS يثبت فيها الخادم هويته بشهادة، ثم يرسل الطلب نفسه مشفّراً. نموذج مفاهيمي
  • HTTP غير مشفّر، المنفذ 80

    • المتصفح العميل
    • الخادم shop.example.com
    1. 1 من المتصفح إلى الخادم: يفتح اتصال TCP
    2. 2 من المتصفح إلى الخادم: يرسل الطلب نصاً صريحاً المسار والترويسات وملفات تعريف الارتباط والمحتوى مقروءة في الطريق GET /account HTTP/1.1
    3. 3 من الخادم إلى المتصفح: يرسل الاستجابة نصاً صريحاً ردّ ويستطيع أي طرف على المسار تعديلها أيضاً HTTP/1.1 200 OK

    النتيجة: مشغّل Wi-Fi أو وكيل أو أي موجّه على المسار يستطيع قراءة كل بايت وتعديله. فشل

  • HTTPS: ⁦TLS 1.3⁩، المنفذ 443

    • المتصفح العميل
    • الخادم shop.example.com
    1. 1 من المتصفح إلى الخادم: يفتح اتصال TCP
    2. 2 من المتصفح إلى الخادم: يقترح المفاتيح ويسمّي المضيف إصدارات TLS المدعومة وحصة مفتاح واسم المضيف ClientHello
    3. 3 من الخادم إلى المتصفح: يردّ باختياراته وشهادته ردّ ومعها توقيع يثبت امتلاكه المفتاح الخاص ServerHello … Certificate … Finished
    4. 4 المتصفح داخليًا: يتحقق من الشهادة الاسم يغطي المضيف، والتواريخ سارية، والسلسلة تنتهي بجذر موثوق نجاح
    5. 5 من المتصفح إلى الخادم: يُتمّ المصافحة صار لدى الطرفين مفاتيح الجلسة نفسها Finished
    6. 6 من المتصفح إلى الخادم: يرسل الطلب نفسه مشفّراً على الشبكة: سجلات TLS غير مقروءة GET /account HTTP/1.1
    7. 7 من الخادم إلى المتصفح: يرسل الاستجابة مشفّرة ردّ HTTP/1.1 200 OK

    النتيجة: يرى المراقب عنوان IP والتوقيت والأحجام واسم المضيف غالباً، لكنه لا يرى المسار ولا الترويسات ولا ملفات تعريف الارتباط ولا المحتوى. نجاح

مصافحة ⁦TLS 1.3⁩ مبسّطة. ويحتاج ⁦TLS 1.2⁩ إلى رحلة ذهاب وإياب إضافية قبل الطلب، ومع ⁦HTTP/3⁩ تجري المصافحة داخل QUIC فوق UDP دون اتصال TCP منفصل.

إصدارات HTTP باختصار

تشترك جميع إصدارات HTTP الحالية في الدلالات المعرَّفة في RFC 9110: فالطرق ورموز الحالة وحقول الترويسة لها المعنى نفسه في كل مكان، والرمز 404 هو 404 في كل إصدار. أما ما يتغيّر فهو طريقة نقل الرسائل:

  • ⁦HTTP/1.1⁩: رسائل نصية صريحة. يُعاد استخدام الاتصال لطلبات كثيرة، لكنه عملياً يحمل طلباً واحداً في كل مرة، لذلك تفتح المتصفحات عدة اتصالات لكل مضيف. أما ⁦HTTP/1.0⁩، الذي كان يفتح اتصالاً جديداً لكل طلب افتراضياً، فنادراً ما يُرى اليوم.
  • ⁦HTTP/2⁩: الرسائل نفسها في إطارات ثنائية (binary frames)، مع طلبات كثيرة تتشارك اتصالاً واحداً في الوقت نفسه (multiplexing) وترويسات مضغوطة. وأسماء الترويسات فيه بأحرف صغيرة دائماً، والمتصفحات لا تستخدم ⁦HTTP/2⁩ إلا عبر HTTPS.
  • ⁦HTTP/3⁩: النموذج نفسه فوق QUIC، وهو بروتوكول نقل يعمل فوق UDP ويتضمّن ⁦TLS 1.3⁩، فلا يؤخّر فقدانُ حزمة إلا الطلبَ الذي تنتمي إليه. وكثيراً ما تعرف المتصفحات أن الخادم يدعمه من ترويسة الاستجابة Alt-Svc، وتعود إلى ⁦HTTP/2⁩ عندما تحجب الشبكة UDP.
  • في الاختبار: أضف عمود Protocol إلى تبويب Network في أدوات المطوّرين؛ ويعرض Chrome القيمة http/1.1 أو h2 أو h3 لكل طلب. ويجب ألا يعتمد السلوك على الإصدار؛ فإن اعتمد عليه فاشتبه في وكيل أو في إعداد لشبكة CDN أو في شيفرة تقارن أسماء الترويسات مع مراعاة حالة الأحرف.

مثال تطبيقي: فحص HTTPS قبل الإصدار

متجر على وشك إصدار صفحة تسجيل دخول جديدة وواجهة API لتطبيقه على الجوال. في بيئة Staging يفحص المختبِر https://staging.shop.example.com وhttps://api-staging.shop.example.com ويسجّل كل نتيجة:

  • العنوان http://staging.shop.example.com/login يجيب بالرمز 301 مع Location: https://staging.shop.example.com/login. ناجح: HTTP غير المشفّر لا يفعل سوى إعادة التوجيه.
  • استجابات HTTPS تحمل Strict-Transport-Security: max-age=31536000. وترويسة HSTS هذه (RFC 6797) تطلب من المتصفح ألا يستخدم مع هذا المضيف إلا HTTPS لمدة سنة، والمتصفحات تتجاهلها إذا وصلت عبر HTTP غير مشفّر. ناجح.
  • الشهادة تغطي *.shop.example.com، وتتصل سلسلتها بجذر موثوق، وتنتهي صلاحيتها بعد 41 يوماً. هذا ليس عيباً، لكن المختبِر يسأل: من يجدّدها، وكيف يُنبَّه الفريق؟
  • تُظهر وحدة التحكم (Console) محتوى مختلطاً (mixed content) محجوباً: الصفحة تحمّل سكربت أداة الدردشة من عنوان http://، والمتصفحات تحجب السكربتات غير الآمنة في صفحات HTTPS، فيختفي زر الدردشة. عيب.
  • التطبيق لا يصل إلى واجهة API، مع أن العنوان نفسه يُفتح دون تحذير في متصفح سطح المكتب. يفشل curl، ويُظهر الأمر openssl s_client -connect api-staging.shop.example.com:443 -showcerts شهادة الخادم وحدها: الشهادة الوسيطة غائبة. عيب، ويُبلَّغ عنه مع هذه الأدلة:
Title:    واجهة api-staging ترسل سلسلة TLS ناقصة؛ التطبيق وcurl يرفضانها
URL:      https://api-staging.shop.example.com/v1/health
Clients:  تطبيق Android 3.8.0 (نسخة staging)؛ curl على Ubuntu
curl:     curl: (60) SSL certificate problem: unable to get local issuer certificate
Android:  SSLHandshakeException: Trust anchor for certification path not found
Browser:  العنوان نفسه يُفتح دون تحذير في Chrome على سطح المكتب
Chain:    openssl s_client -showcerts يعرض شهادة واحدة (شهادة الخادم)
Expected: يرسل الخادم شهادته والشهادة الوسيطة؛ ويتصل العملاء والتحقق
          من الشهادات مفعّل
Note:     لا يُتجاوز العيب بـ curl -k أو بإعداد في التطبيق يثق بكل الشهادات

جرّبها: فاحص إعادة التوجيه جرّبها: محلّل ترويسات الأمان جرّبها: مختبِر نقاط نهاية API

أخطاء شائعة

  • قراءة القفل في شريط العنوان على أنه «هذا الموقع آمن». فبروتوكول HTTPS يحمي البيانات أثناء انتقالها، ولا يقول شيئاً عن التحكم في الوصول أو التحقق من صحة المدخلات أو ما يفعله الخادم بالبيانات.
  • إيقاف التحقق من الشهادات لتعمل الاختبارات (curl -k أو verify=False أو عميل يثق بكل شيء) ثم تركه موقوفاً. عندها لا تستطيع الاختبارات اكتشاف عيوب الشهادات التي سيواجهها المستخدمون، وقد يتسلّل الإعداد إلى إصدار حقيقي.
  • فحص HTTPS في متصفح سطح المكتب فقط. فالمتصفحات قد تُكمل شهادة وسيطة ناقصة، أما تطبيقات الجوال والسكربتات وأنظمة الشركاء فغالباً لا تستطيع.
  • اختبار السيناريو بالنقر عبر خطواته بالترتيب فقط. فالتحديث والروابط العميقة وعلامة التبويب الثانية وإعادة إرسال الطلب هي المواضع التي تظهر فيها عيوب الحالة.
  • فحص عنوان https:// الذي أُعطي لك فقط، وفي يوم الفحص فقط. فالمستخدمون يصلون أيضاً عبر http:// وعبر العنوان مع www أو دونها، ويجب أن ينتهي كلٌّ منها إلى موقع HTTPS؛ والشهادة الصالحة اليوم توقف جميع العملاء في تاريخ انتهائها.

من منظور ضمان الجودة

نفّذ فحوص HTTP وHTTPS على كل بيئة جديدة وقبل كل إصدار يمسّ النطاقات أو الشهادات أو موازنات الأحمال أو شبكات CDN أو الوكلاء. ونادراً ما يكون المسؤولون عنها مطوّري الميزات: فالشهادات وإعادة التوجيه وHSTS تكون عادةً لدى فريق المنصة أو DevOps، وتخزين الجلسات لدى مطوّري الواجهة الخلفية. أضف إعادة التوجيه من HTTP إلى HTTPS وتاريخ انتهاء الشهادة إلى اختبار الدخان (smoke test)، ليُفحصا بعد كل نشر.

وفي التقرير، سجّل العنوان الكامل مع المخطط والمنفذ، والعميل وإصداره (المتصفح، أو نسخة التطبيق، أو curl)، والبروتوكول (h2 أو h3)، وأي VPN أو وكيل في المسار، والوقت، وفي حالة الشهادات أسماء المضيفين وسلسلة الجهات المُصدِرة وتاريخ الانتهاء. واسأل مبكراً: من يجدّد الشهادات ومن يُنبَّه؟ هل يُعاد توجيه كل عناوين http://؟ أين تُحفظ حالة الجلسة عند تشغيل عدة نسخ من الخادم؟ هل يتحقق عملاء الاختبار لدينا من الشهادات كما يفعل العملاء الحقيقيون؟

تمرين عملي

راجع إعداد HTTP وHTTPS لصفحة دفع

المطلوب

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

المادة
صفحة الدفع: https://pay-staging.example.com/checkout

1. العنوان http://pay-staging.example.com/ يعيد 200 ويعرض الصفحة الرئيسية.
2. الشهادة: SAN *.example.com وexample.com، والسلسلة تنتهي بجذر موثوق،
   وتنتهي صلاحيتها بعد 18 يوماً.
3. نموذج البطاقة في /checkout يرسل إلى http://pay-staging.example.com/api/charge
4. بعد التحديث في الخطوة 2 من 3، يظهر ملخص الطلبية فارغاً في نحو نصف المرات.
   يعمل خادما تطبيق اثنان خلف موازن الأحمال.
5. عمود Protocol في أدوات المطوّرين: h2 لأول طلب، وh3 لمعظم الطلبات اللاحقة.
6. حزمة اختبارات API المؤتمتة تعمل والتحقق من الشهادات موقوف.
الخطوات
  1. حدّد قاعدة HTTP أو HTTPS التي تمسّها كل ملاحظة.
  2. صنّفها: عيب، أو مخاطرة، أو سلوك متوقع.
  3. للعيوب والمخاطر، اكتب الخطوة التالية: تقرير خطأ مع أدلته، أو سؤالاً ومن ستسأله.
إظهار الإجابة النموذجية
الإجابة النموذجية

1. عيب (HTTPS): يقدّم HTTP غير المشفّر الموقعَ بدلاً من إعادة التوجيه، فكل من يكتب العنوان يبدأ دون تشفير. المتوقع: 301 أو 308 إلى المسار نفسه على https://. أبلغ عنه مع الطلب والاستجابة.

2. مخاطرة (الشهادات): حرف البدل يغطي pay-staging.example.com والسلسلة كاملة، لكن انتهاء الصلاحية بعد 18 يوماً يحتاج إلى مسؤول. اسأل فريق المنصة هل التجديد تلقائي ومن يُنبَّه.

3. عيب بخطورة حرج (Critical) في HTTPS: ستغادر بيانات البطاقة الصفحة نصاً غير مشفّر. والمتصفحات تحذّر من هذا الإرسال أو تحجبه، لكن يجب أن يرسل النموذج إلى https://. أبلغ عنه فوراً.

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

5. سلوك متوقع (الإصدارات): كثيراً ما تبدأ المتصفحات بـ ⁦HTTP/2⁩ ثم تنتقل إلى ⁦HTTP/3⁩ بعد ترويسة Alt-Svc. أبلغ عنه فقط إذا اختلف السلوك بين الاثنين.

6. مخاطرة في إعداد الاختبار (الشهادات): لا تستطيع الحزمة اكتشاف شهادة منتهية أو سلسلة مكسورة. اطلب أن يثق عملاء الاختبار بجهة إصدار شهادات Staging وأن يُعاد تفعيل التحقق.

أسئلة شائعة

هل HTTPS بروتوكول مختلف عن HTTP؟

لا. HTTPS هو HTTP منقولاً داخل TLS: الطرق والترويسات ورموز الحالة نفسها، مع المخطط https والمنفذ 443 افتراضياً. فكل ما تتعلمه عن رسائل HTTP ينطبق على الاثنين، ويضيف HTTPS حولها التشفير وسلامة البيانات ومصادقة الخادم.

ما الفرق بين SSL وTLS؟

SSL هو البروتوكول الأقدم الذي حلّ محله TLS. وجميع إصدارات SSL، ومعها ⁦TLS 1.0⁩ و⁦TLS 1.1⁩، مُهملة لعدم أمانها، وينبغي ألا يقبل الخادم اليوم إلا ⁦TLS 1.2⁩ و⁦TLS 1.3⁩. وبقي الاسم في عبارات شائعة مثل «شهادة SSL»، وهي الشهادة نفسها المستخدمة مع TLS.

هل أحتاج إلى اختبار كل إصدار من HTTP؟

غالباً لا. فالدلالات متطابقة، لذا اختبر السلوك مرة واحدة وسجّل البروتوكول المستخدم. وأضف فحوصاً محددة حيث يختلف العملاء أو الشبكات، مثل شبكة مكتب تحجب UDP فتعود فيها المتصفحات من ⁦HTTP/3⁩ إلى ⁦HTTP/2⁩.

خادم Staging لدينا يستخدم شهادة موقّعة ذاتياً. كيف نختبر؟

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

المراجع

تدرّب بأدوات متقن

تفكيك عنوان URL إلى البروتوكول والمضيف والمنفذ والمسار ومعاملات الاستعلام والجزء (fragment) وبيانات الاعتماد.

الويب

اطّلع بالضبط على ما يرسله عميلك: الطريقة والترويسات والاستعلام والجسم وعنوان IP ومعلومات TLS.

اختبار واجهات API

تتبّع سلاسل إعادة التوجيه (301/302/307/308) وعرض كل قفزة وحالتها وعنوان URL النهائي.

الويب

تقييم ترويسات أمان HTTP (CSP وHSTS وX-Frame-Options وReferrer-Policy وPermissions-Policy وCOOP/CORP) من ترويسات ملصقة أو عنوان URL عام.

التحقق

تحقّق سريعاً من إمكانية الوصول إلى نقطة نهاية API: الحالة وزمن الاستجابة والحجم ونوع المحتوى وTLS.

اختبار واجهات API

للتعمّق أكثر

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة