كنت أشعر أن هناك العديد من القيم في Request.ServerVariables، لكن الآن أرى أنه لا يزال هناك الكثير، لكن اليوم سأتحدث عن إحدى القيم - HTTP_Referer وما هو الفرق بين Server_Name و Http_Host في Request.ServerVariables؟
لقد قمت للتو بتشغيل جزء من التعليمات البرمجية لمعرفة عدد القيم الموجودة في Request.ServerVariables، ونظرت إليها ووجدت 50 في المجموع!
الكود<%=Request.ServerVariables.count%>
كنت أشعر أن هناك الكثير من القيم في Request.ServerVariables، لكن الآن أرى أنه لا يزال هناك الكثير، لكن اليوم سأتحدث عن إحدى القيم ---- HTTP_Referer
بادئ ذي بدء، نعلم أولاً أن التطبيق الأكثر استخدامًا لـ HTTP_Referer هو منع عمليات الإرسال الخارجية.
في الحالات التالية، يتم الحصول على Request.ServerVariables(HTTP_REFERER) بشكل طبيعي من شريط عنوان المتصفح:
1) استخدم <a href=> مباشرةً
2) النموذج المقدم مع إرسال أو <input type=image> (POST أو GET)
3) إرسال النموذج باستخدام JavaScript (POST أو GET)
دعونا نلقي نظرة على الموقف حيث لا يمكن لـ Request.ServerVariables(HTTP_REFERER) أخذ القيمة بشكل طبيعي:
1) الرابط من المفضلة
2) انقر على الصفحة الرئيسية أو العنوان المخصص
3) أدخل العنوان مباشرة في المتصفح
4) استخدم Location.href أو Location.replace() في JavaScript
5) <%Response.Redirect%>
6) إعادة التوجيه <%Response.AddHeader%> أو <mete http-equiv=refresh>
7) تحميل العنوان باستخدام XML
من الواضح أن Request.ServerVariables(HTTP_REFERER) لا يعمل بشكل صحيح في معظم الحالات. سأقدم استخدامه المحدد بالتفصيل في المقالات المستقبلية، كما سأقدم أيضًا الاختلافات بين Request.ServerVariables(HTTP_HOST)Request.ServerVariables(SERVER_NAME).
ابقوا متابعين!
ما الفرق بين Server_Name وHttp_Host في Request.ServerVariables؟
إذا لم تنظر عن كثب، فلن تتمكن من معرفة الفرق بينهما. لقد بحثت كثيرًا على الإنترنت، لكنني ما زلت لم أفهم ذلك، ولكن في النهاية كانت هناك جملة واضحة جدًا: يمكن لـ Http_Host طلب Server_Port غير 80. ببساطة، Http_Host=Server_Name:Server_Port.
لقد قمت بنشر مقال حول دور Http_Referer من قبل، والآن سأقوم بدمجه لكتابة دالة ASP تمنع التقديمات الخارجية.
انسخ الكود كما يلي:الوظيفة ChkPost()
dim server_v1,server_v2
chkpost=false
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
If Mid(server_v1,8,Len(server_v2) ) <>server_v2 إذن
chkpost=False
else
chkpost=True
end If
end function
Select Case
إذا كنت ترغب في تحديد واحدة من مجموعات متعددة من الرموز للتنفيذ، يمكنك استخدام عبارة SELECT:
انسخ الرمز كما يلي:
حدد حالة حالة الدفع
Cash
msgbox أنت ذاهب إلى
حالةالدفع نقدًا
Visa
msgbox أنت ستدفع باستخدام
حالة التأشيرة AmEx
msgbox أنت ستدفع باستخدام
حالة American Express آخر
msgbox طريقة الدفع غير
معروفة
كيف يعمل كودالتحديد
أعلاه: أولاً، نحتاج إلى تعبير بسيط (عادةً ما يكون متغيرًا)، وسيتم تقييم هذا التعبير مرة واحدة. ثم تتم مقارنة قيمة التعبير مع القيمة في كل حالة، وإذا كان هناك تطابق، يتم تنفيذ الكود المقابل للحالة المطابقة.