Java.net.HttpCookie في جافا

المتطلب السابق - ملفات تعريف الارتباط

تستخدم العديد من مواقع الويب سلاسل نصية صغيرة تُعرف باسم ملفات تعريف الارتباط لتخزين الحالة المستمرة من جانب العميل بين الاتصالات. يتم تمرير ملفات تعريف الارتباط من الخادم إلى العميل وإعادتها مرة أخرى في رؤوس الطلبات والاستجابات HTTP. يمكن استخدام ملفات تعريف الارتباط بواسطة الخادم للإشارة إلى معرفات الجلسة ومحتويات عربة التسوق وبيانات اعتماد تسجيل الدخول وتفضيلات المستخدم والمزيد. يمثل كائن HttpCookie ملف تعريف ارتباط http الذي يحمل معلومات الحالة بين الخادم ووكيل المستخدم. يتم اعتماد ملف تعريف الارتباط على نطاق واسع لإنشاء جلسات ذات حالة. هناك 3 مواصفات لملفات تعريف الارتباط http:

يمكن لفئة HttpCookie قبول جميع هذه الأشكال الثلاثة من بناء الجملة.

منشئ :

يقوم بإنشاء ملف تعريف ارتباط بالاسم والقيمة المحددين. يجب أن يحتوي الاسم على أحرف ASCII أبجدية رقمية فقط وأن يتوافق مع RFC 2965. ويطرح استثناء IllegalArgument إذا كان الاسم غير صحيح أو NullPointerException إذا كان الاسم فارغًا. يمكن أن تكون القيمة أي شيء يريد ملف تعريف الارتباط تخزينه.

    Syntax :     public HttpCookie(String name   
String value)
Parameters :
name : name of cookie
value : value of cookie
Throws :
IllegalArgumentException : if name does not conform to RFC2965
NullPointerException : if name is null

طُرق :

  1. تحليل () : تقوم بإرجاع قائمة بملفات تعريف الارتباط التي تم تحليلها من سلسلة الرأس. يجب أن يبدأ الرأس برمز set-cookie أو set-cookie2 أو يجب ألا يحتوي على أي رمز مميز على الإطلاق.
        Syntax :     public static List parse(String header)   
    Parameters :
    header : String to be parsed as cookies
  2. انتهت صلاحيته () : تقوم بإرجاع قيمة منطقية تشير إلى ما إذا كانت صلاحية ملف تعريف الارتباط قد انتهت أم لا.
        Syntax :     public boolean hasExpired()  
  3. مجموعة التعليق () : يستخدم لتعيين وصف قصير يصف الغرض من ملف تعريف الارتباط. يتم استخدامه عند تقديم ملف تعريف الارتباط للمستخدم.
        Syntax :     public void setComment(String purpose)   
    Parameters :
    purpose : purpose of cookie
  4. الحصول على تعليق () : يُرجع وصف ملف تعريف الارتباط أو يُرجع قيمة فارغة إذا لم يكن لملف تعريف الارتباط أي تعليقات.
        Syntax :     public void getComment()  
  5. setCommentURL() : يُستخدم لتعيين عنوان url للتعليق القصير الذي يصف الغرض من ملف تعريف الارتباط. يتم استخدامه عندما يقدم المتصفح ملف تعريف الارتباط للمستخدم.
        Syntax :     public void setCommentURL(String purpose)   
    Parameters :
    purpose : purpose of cookie
  6. الحصول على التعليق () : يُرجع تعليق URL الخاص بملف تعريف الارتباط أو يُرجع قيمة فارغة إذا لم يكن لملف تعريف الارتباط أي تعليقات على عنوان URL.
        Syntax :     public String getComment()  
  7. setDiscard() : يُستخدم لتعيين ما إذا كان يجب على وكيل المستخدم تجاهل ملف تعريف الارتباط هذا أم لا.
        Syntax :     public void setDiscard(Boolean discard)   
    Parameters :
    discard : true if UA should discard otherwise false
  8. الحصول على تجاهل () : تُرجع حالة متغير التجاهل الذي تم تعيينه بواسطة طريقة setDiscard(). وبشكل أكثر تحديدًا، تُرجع القيمة true إذا قامت UA بتجاهل ملف تعريف الارتباط هذا وإلا فإنها تكون خاطئة.
        Syntax :     public Boolean getDiscard()  
  9. setPortList() : يُستخدم لتحديد المنافذ التي يمكن أن يستخدمها ملف تعريف الارتباط هذا.
        Syntax :     public void setPortList(String portList)   
    Parameters :
    portList : String of comma separated digits specifying the ports.
  10. getPortList() : إرجاع قائمة المنافذ التي يمكن لملف تعريف الارتباط هذا استخدامها.
        Syntax :     public String getPortList()  
  11. مجموعة المجال () : حدد المجال الذي يجب أن يكون ملف تعريف الارتباط هذا مرئيًا فيه. على سبيل المثال، لن يتم عادةً إرجاع ملفات تعريف الارتباط المرسلة من servlet على موقع bali.vacations.com بواسطة المتصفح إلى الصفحات الموجودة على موقع queensland.vacations.com. إذا أراد الموقع أن يحدث هذا، فيمكن أن تحدد servlets ملف تعريف الارتباط.setDomain(.vacations.com). لمنع الخوادم من تعيين ملفات تعريف الارتباط التي تنطبق على المضيفين خارج نطاقهم، يجب أن يفي النطاق المحدد بالمتطلبات التالية: يجب أن يبدأ بنقطة (على سبيل المثال، .coreservlets.com).
        Syntax :     public void setDomain(String domain)   
    Parameters :
    domain : String representing the domain in which this cookie is visible
  12. الحصول على المجال () : إرجاع المجال الذي يكون ملف تعريف الارتباط هذا مرئيًا فيه.
        Syntax :     public String getDomain()  
  13. سيتماكساج () : يستخدم لتعيين الحد الأقصى لعمر ملف تعريف الارتباط بالثواني. وهو يحدد الحد الأقصى للوقت بعد إنشاء ملف تعريف الارتباط الذي يظل على قيد الحياة. تحدد القيم السالبة أن ملف تعريف الارتباط سوف تنتهي صلاحيته بمجرد خروج المتصفح.
        Syntax :     public void setMaxAge(long age)   
    Parameters :
    age : Max survive time in seconds
  14. الحصول على ماكساجي () : إرجاع الحد الأقصى لعمر ملف تعريف الارتباط.
        Syntax :     public long getMaxAge()  
  15. مجموعة المسار () : يُستخدم لتحديد المسار إلى العميل الذي يجب أن يُرجع ملف تعريف الارتباط إليه. يكون ملف تعريف الارتباط هذا مرئيًا لجميع الصفحات والأدلة الفرعية للمسار المحدد. على سبيل المثال، إذا أرسل الخادم ملف تعريف الارتباط من http://ecommerce.site.com/toys/specials.html، فسيرسل المتصفح ملف تعريف الارتباط مرة أخرى عند الاتصال بـ http://ecommerce.site.com/to/beginners.html ولكن ليس بـ http://ecommerce.site.com/c/classic.html.
        Syntax :     public void setPath(String uri)   
    Parameters :
    uri - a String specifying a path
  16. الحصول على المسار () : إرجاع المسار المحدد لملف تعريف الارتباط هذا.
        Syntax :     public String getPath()  
  17. تنفيذ جافا:
  18. Java
       // Java Program to illustrate various   // methods of java.net.HttpCookie class   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setComment() method      cookie  .  setComment  (  'Just for explanation'  );      // getComment() method      System  .  out  .  println  (  'Comment : '     +     cookie  .  getComment  ());      // setCommentURL() method      cookie  .  setCommentURL  (  '192.168.1.1'  );      // getCommentURL() method      System  .  out  .  println  (  'CommentURL : '     +     cookie  .  getCommentURL  ());      // setDiscard() method      cookie  .  setDiscard  (  true  );      // getDiscard() method      System  .  out  .  println  (  'Discard : '     +     cookie  .  getDiscard  ());      // setPortlist() method      cookie  .  setPortlist  (  '10018520'  );      // getPortList() method      System  .  out  .  println  (  'Ports: '     +     cookie  .  getPortlist  ());      // setDomain() method      cookie  .  setDomain  (  '.localhost.com'  );      // getDomain() method      System  .  out  .  println  (  'Domain : '     +     cookie  .  getDomain  ());      // setMaxAge() method      cookie  .  setMaxAge  (  3600  );      // getMaxAge() method      System  .  out  .  println  (  'Max Age : '     +     cookie  .  getMaxAge  ());      // setPath() method      cookie  .  setPath  (  '192.168.1.1/admin/index.html'  );      // getPath() method      System  .  out  .  println  (  'Path: '     +     cookie  .  getPath  ());      }   }   
  19. الإخراج
  20.  Comment : Just for explanation   
    CommentURL : 192.168.1.1
    Discard : true
    Ports: 10018520
    Domain : .localhost.com
    Max Age : 3600
    Path: 192.168.1.1/admin/index.html
  21. سيتسيكور () : يُشار إلى ما إذا كان سيتم استخدام البروتوكول الآمن أثناء إرسال ملف تعريف الارتباط هذا. القيمة الافتراضية خاطئة.
        Syntax :     public void setSecure(boolean secure)   
    Parameters:
    secure - If true the cookie can only be sent over a secure protocol like https.
    If false it can be sent over any protocol.
  22. الحصول على الأمان () : يُرجع صحيحًا إذا كان يجب إرسال ملف تعريف الارتباط هذا عبر بروتوكول آمن، وإلا فسيكون خطأ.
        Syntax :     public boolean getSecure()  
  23. الحصول على الاسم () : إرجاع اسم ملف تعريف الارتباط.
           Syntax :     public String getName()  
  24. قيمة المجموعة () : يعين قيمة جديدة لملف تعريف الارتباط بعد التهيئة.
        Syntax :     public void setValue(String newValue)   
    Parameters :
    newValue - a String specifying the new value
  25. الحصول على القيمة : إرجاع قيمة ملف تعريف الارتباط.
        Syntax :     public String getValue()  
  26. الحصول على النسخة () : إرجاع 0 إذا كان ملف تعريف الارتباط يتوافق مع مواصفات Netscape الأصلية؛ 1 إذا كان ملف تعريف الارتباط يتوافق مع RFC 2965/2109
        Syntax :     public int getVersion()  
  27. مجموعة الإصدار () : يُستخدم لتعيين إصدار بروتوكول ملف تعريف الارتباط الذي يستخدمه ملف تعريف الارتباط هذا.
        Syntax :    public void setVersion(int v)   
    throws IllegalArgumentException
    Parameters :
    v - 0 for original Netscape specification; 1 for RFC 2965/2109
    Throws :
    IllegalArgumentException - if v is neither 0 nor 1
  28. isHttpOnly() : يُرجع صحيحًا إذا كان من الممكن استخدام ملف تعريف الارتباط فقط بواسطة http، أي أنه لا يمكن استخدامه بواسطة لغات البرمجة النصية مثل JS vb وما إلى ذلك.
        Syntax :     public boolean isHttpOnly()  
  29. setHttpOnly() : يُستخدم لتعيين ما إذا كان ملف تعريف الارتباط هذا هو http فقط أم لا.
        Syntax :     public void setHttpOnly(boolean httpOnly)   
    Parameters :
    httpOnly - if true make the cookie HTTP only i.e. only visible as part
    of an HTTP request.
  30. تطابقات المجال () : وظيفة مساعدة للتحقق مما إذا كان اسم المضيف موجودًا في المجال أم لا.
        Syntax :     public static boolean domainMatches(String domain   
    String host)
    Parameters :
    domain : domain to check hostname with
    host : host to check
  31. إلى السلسلة () : إنشاء تمثيل سلسلة لملف تعريف الارتباط هذا.
           Syntax :    public String toString()  
  32. يساوي () : يُرجع صحيحًا إذا كان اثنان من ملفات تعريف الارتباط http متساويان مع بعضهما البعض، وإلا فإن القيمة كاذبة.
           Syntax :    public boolean equals(Object obj)  
  33. رمز التجزئة () : قم بإرجاع رمز التجزئة لملف تعريف الارتباط http هذا. والنتيجة هي مجموع قيمة رمز التجزئة لثلاثة مكونات مهمة لملف تعريف الارتباط هذا: اسم المجال والمسار. يتجاوز رمز التجزئة في كائن الفئة.
        Syntax :     public int hashCode()  
  34. استنساخ () : إنشاء وإرجاع نسخة من هذا الكائن. يتجاوز طريقة الاستنساخ لفئة الكائن.
        Syntax :     public Object clone()  

تنفيذ جافا:

Java
   // Java Program to illustrate various   // methods of java.net.HttpCookie class   import     java.net.HttpCookie  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )         {      // Constructor to create a new cookie.      HttpCookie     cookie     =     new     HttpCookie  (  'First'       '1'  );      // setSecure() method      cookie  .  setSecure  (  true  );      // getSecure() method      System  .  out  .  println  (  'Secure : '     +     cookie  .  getSecure  ());      // getName() method      System  .  out  .  println  (  'Name : '     +     cookie  .  getName  ());      // setValue() method : can be used to modify value of cookie.      cookie  .  setValue  (  '2'  );      // getvalue() method      System  .  out  .  println  (  'Value : '     +     cookie  .  getValue  ());      // setVersion() method      cookie  .  setVersion  (  1  );      // getVersion() method      System  .  out  .  println  (  'Version : '     +     cookie  .  getVersion  ());      // setHttPonly() method      cookie  .  setHttpOnly  (  true  );      // isHttpOnly() method      System  .  out  .  println  (  'is HTTP only : '     +     cookie  .  isHttpOnly  ());      // toString() method      System  .  out  .  println  (  'toString : '     +     cookie  .  toString  ());      // hashcode() method      System  .  out  .  println  (  'Hashcode : '     +     cookie  .  hashCode  ());      }   }   

الإخراج :

 Secure : true   
Name : First
Value : 2
Version : 1
is HTTP only : true
toString : First='2'
Hashcode : 97440432

مثال آخر يوضح كيفية استخدام ملفات تعريف الارتباط فعليًا بواسطة خوادم الويب حيث نقوم بطباعة تفاصيل ملفات تعريف الارتباط المخزنة بواسطة www.facebook.com

Java
   import     java.io.IOException  ;   import     java.net.CookieHandler  ;   import     java.net.CookieManager  ;   import     java.net.CookieStore  ;   import     java.net.HttpCookie  ;   import     java.net.URL  ;   import     java.net.URLConnection  ;   import     java.util.List  ;   public     class   httpcookie1      {      public     static     void     main  (  String  []     args  )     throws     IOException         {      String     urlString     =     'https://www.facebook.com/'  ;      // Create a default system-wide CookieManager      CookieManager     cookieManager     =     new     CookieManager  ();      CookieHandler  .  setDefault  (  cookieManager  );      // Open a connection for the given URL      URL     url     =     new     URL  (  urlString  );      URLConnection     urlConnection     =     url  .  openConnection  ();      urlConnection  .  getContent  ();      // Get CookieStore which is the default internal in-memory      CookieStore     cookieStore     =     cookieManager  .  getCookieStore  ();      // Retrieve all stored HttpCookies from CookieStore      List   <  HttpCookie  >     cookies     =     cookieStore  .  getCookies  ();      int     cookieIdx     =     0  ;      // Iterate HttpCookie object      for     (  HttpCookie     ck     :     cookies  )     {      System  .  out  .  println  (  '------ Cookie.'     +     ++  cookieIdx     +     ' -------'  );      // Get the cookie name      System  .  out  .  println  (  'Cookie name: '     +     ck  .  getName  ());      // Get the domain set for the cookie      System  .  out  .  println  (  'Domain: '     +     ck  .  getDomain  ());      // Get the max age of the cookie      System  .  out  .  println  (  'Max age: '     +     ck  .  getMaxAge  ());      // Get the path of the server      System  .  out  .  println  (  'Server path: '     +     ck  .  getPath  ());      // Get boolean if the cookie is being restricted to a secure      // protocol      System  .  out  .  println  (  'Is secured: '     +     ck  .  getSecure  ());      // Gets the value of the cookie      System  .  out  .  println  (  'Cookie value: '     +     ck  .  getValue  ());      // Gets the version of the protocol with which the given cookie is      // related.      System  .  out  .  println  (  'Cookie protocol version: '     +     ck  .  getVersion  ());      }      }   }   

الإخراج :

 ------------------ Cookie.1 ------------------   
Cookie name: fr
Domain: .facebook.com
Max age: 7775999
Server path: /
Is secured: true
Cookie value: 0Xj7tBSsWlmtXPo92..BZFC8G.qC.AAA.0.0.BZFC8G.AWUwiIgM
Cookie protocol version: 0

مرجع:

وثائق جافا الرسمية

إنشاء اختبار