English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
عندما يطلب المتصفح صفحة من الويب، يرسل سلسلة من المعلومات التي لا يمكن قراءتها مباشرة إلى خادم الشبكة، لأن هذه المعلومات هي جزء من رأس HTTP المرسل. يمكنك التحقق من بروتوكول HTTP للحصول على معلومات إضافية.
يظهر الجدول أدناه بعض المحتويات المهمة للمعلومات في رأس المتصفح، التي ستظهر بشكل متكرر في البرمجة الشبكية في المستقبل:
المعلومات | وصف |
---|---|
Accept | النوع MIME الذي يمكن لمتصفح الويب أو العملاء الآخرين معالجته. قيمته عادة ما تكون image/png أو image/jpeg |
Accept-Charset | يحدد مجموعة الحروف التي سيستخدمها المتصفح. على سبيل المثال، ISO-8859-1 |
Accept-Encoding | يحدد نوع الت编码. عادةً ما يكون لهذا القيمة gzip أوcompress |
Accept-Language | يحدد اللغة المفضلة للعميل، وسيقوم servlet بتقديم مجموعة النتائج المكونة من اللغة الحالية أولاً، إذا كان servlet يدعم هذه اللغة. على سبيل المثال، en،en-us،ru، إلخ. |
Authorization | يُستخدم لتحديد المستخدمين المختلفين عند زيارة صفحات الويب المحمية بكلمة المرور |
Connection | يوضح ما إذا كان العميل يمكنه التعامل مع الاتصال الدائم. يسمح الاتصال الدائم للعميل أو المتصفح بجلب عدة ملفات في طلب واحد.Keep-Alive يعني تمكين الاتصال الدائم |
Content-Length | يُستخدم فقط في طلبات POST، ويشير إلى عدد بيانات POST |
Cookie | يعيد الكوكيز التي تم إرسالها سابقًا إلى الخادم |
Host | يعطي اسم النطاق ورقم المنفذ في URL الأصلي |
If-Modified-Since | يوضح أن العميل يحتاج إلى صفحة الويب هذه فقط إذا تم تعديلها في تاريخ معين. يرسل الخادم رمز 304 إلى العميل، مما يعني أن لا يوجد موارد تم تعديلها |
If-Unmodified-Since | عكس If-Modified-Since، فقط إذا لم يتم تعديل المستند بعد تاريخ معين، فإن العمل سيتم بنجاح |
Referer | يعبر عن عنوان URL للصفحة المشار إليها. على سبيل المثال، إذا كنت في صفحة 1 ثم ضغطت على رابط إلى صفحة 2، فإن عنوان URL لصفحة 1 سيكون جزءًا من معلومات الرأس التي يقدمها المتصفح لصفحة 2. |
User-Agent | لتمييز بين طلبات مختلفة من المتصفحات أو العملاء، وإعادة توجيه محتوى مختلف بناءً على نوع المتصفح. |
يعد مكتبة request مثالاً على فئة javax.servlet.http.HttpServletRequest. كلما قدم العميل طلبًا لصفحة، يولد محرك JSP مكتبة جديدة تمثل هذا الطلب.
يقدم مكتبة request مجموعة من الطرق لاستخراج معلومات الرأس HTTP، بما في ذلك بيانات النموذج، الكوكيز، طريقة HTTP، إلخ.
سيتم تقديم بعض الطرق الشائعة لاستخراج معلومات الرأس HTTP في برمجة JSP. لمزيد من التفاصيل، راجع الجدول التالي:
الرقم | الطريقة& وصف |
---|---|
1 | Cookie[] getCookies() تقديم مصفوفة تحتوي على جميع الكوكيز للعميل |
2 | Enumeration getAttributeNames() يعود مجموعة جميع أسماء الخاصيات للـ request object |
3 | Enumeration getHeaderNames() يعود مجموعة جميع عناوين الرؤوس HTTP |
4 | Enumeration getParameterNames() يعود مجموعة جميع المعامل في الطلب |
5 | HttpSession getSession() يعود موضوع الـ session المتباين مع الطلب، إذا لم يكن موجودًا فيقوم بإنشاء واحد |
6 | HttpSession getSession(boolean create) يعود موضوع الـ session المتباين مع الطلب، إذا لم يكن موجودًا ويكون المفسر create صحيحًا، فيعطى موضوع session جديد |
7 | Locale getLocale() يعود موضوع الـ Locale الحالي، يمكن تعيينه في الـ response |
8 | Object getAttribute(String name) يعود قيمة الخاصية المحددة باسمها، إذا لم تكن موجودة فيعطى null. |
9 | ServletInputStream getInputStream() يعود تدفق الدخول للطلب |
10 | String getAuthType() يعود اسم خطة التحقق، المستخدمة لحماية servlet،مثل "BASIC" أو "SSL" أو null إذا لم يضبط JSP إجراء الحماية |
11 | String getCharacterEncoding() يعود اسم مجموعة الترميز للطلب |
12 | String getContentType() يعود نوع MIME لمحتوى الطلب، إذا لم يكن معروفًا فيعطى null |
13 | String getContextPath() يعود مسار الـ URI المحدد بالسياق في الطلب |
14 | String getHeader(String name) يعود عنوان المعلومات المحدد باسمه |
15 | String getMethod() يعود طريقة HTTP هذا الطلب، مثل GET،POST،أوPUT |
16 | String getParameter(String name) يعود المعامل المحدد باسمه في هذا الطلب، إذا لم يكن موجودًا فيعطى null |
17 | String getPathInfo() يعود أي مسار إضافي مرتبط بعنوان URL هذا الطلب |
18 | String getProtocol() يعود اسم البروتوكول والمساحة الإصدار المستخدمة في هذا الطلب |
19 | String getQueryString() رشته جستجو را که در URL درخواست شده شامل است، باز میگرداند |
20 | String getRemoteAddr() آدرس IP کاربر را باز میگرداند |
21 | String getRemoteHost() نام کامل کاربر را باز میگرداند |
22 | String getRemoteUser() نام کاربری را که از طریق احراز هویت شده است، باز میگرداند، اگر کاربری احراز هویت نشده باشدnull باز میگرداند |
23 | String getRequestURI() URI درخواست شده را باز میگرداند |
24 | String getRequestedSessionId() شناسه session درخواست شده را باز میگرداند |
25 | String getServletPath() مسیر servlet درخواست شده را باز میگرداند |
26 | String[] getParameterValues(String name) تمام مقادیر پارامتر به نام مشخص شده را باز میگرداند، اگر وجود نداردnull باز میگرداند |
27 | boolean isSecure() مطمئن میشود که درخواست از کانال رمزنگاری شده استفاده کرده است، مانند HTTPS |
28 | int getContentLength() تعداد بایتهای شامل در بدنه درخواست را باز میگرداند، اگر ناشناخته باشد-1 باز میگرداند |
29 | int getIntHeader(String name) مقدار سرور اطلاعات سرور به نام مشخص شده را باز میگرداند |
30 | int getServerPort() پورت سرور را باز میگرداند |
در این مثال، ما از روش getHeaderNames() کلاس HttpServletRequest برای خواندن اطلاعات سرور HTTP استفاده خواهیم کرد. این روش اطلاعات سرور HTTP فعلی را به صورت انجمن باز میگرداند.
بعد از دریافت اشیاء Enumeration، به روش استاندارد از اشیاء Enumeration مرور میکنیم، برای تعیین زمان توقف از روش hasMoreElements() استفاده میکنیم و برای دریافت نام هر پارامتر از روش nextElement() استفاده میکنیم.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساس (oldtoolbag.com)</title> </head> <body> <h2>مثال على طلب رأس HTTP</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>اسم الرأس</th><th>قيمة(قيم) الرأس</th> </tr> <% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
بزيارة main.jsp، ستحصل على النتيجة التالية:
يمكنك تجربة طرق أخرى من HttpServletRequest في الكود أعلاه.