לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 05-05-2009, 16:07
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
ה-Web, יחסי שרת-לקוח, ועיבוד קוד צד שרת

עולם ה-Web מורכב מתקשורת בין מחשבים:
בצד האחד יש את תוכנת השרת (Server) שמפענחת בקשות של לקוחות (Clients) ומחזירה להם מידע טקסטואלי, כלומר שפת תסריט.
בצד השני יש את הלקוח, שהוא תוכנת דפדפן ברוב המקרים, שמקבל את המידע הטקסטואלי (כלומר מקבל Reply מהשרת) ופועל בהתאם.

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

בכל גיחה שכזו, מהשרת ללקוח או מהלקוח לשרת, נשלחים גם בראש ההודעה כותרים (Headers) שמספקים מידע (Metadata) על תוכן ההודעה.
הכותרים מסווגים את תוכן ההודעה, כמו ה-Format (לדוגמא, text/html, text/css וכו'), קידוד המידע הטקסטואלי (utf-8 וכו') ואחרים.

הנה דוגמא של כותרי הודעת Request שנשלחה אל שרת Web (לכתובת http://www.fresh.co.il), וכותרי הודעת Reply שהתקבלה מהשרת אל ה-Client:
(חלק מהמידע הוסתר מטעמי פרטיות)

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

Request

לפני כל הכותרים מופיעה שורה הכוללת את:
  • מתודת השליחה של הבקשה (GET,POST,HEAD,PUT וכו').
  • נתיב המסמך המבוקש. עשוי לכלול את שאילתת ה-URL (נקרא query ; ראה URL ).
  • פרוטוקול ה-HTTP שעל-פיו כתובה הבקשה.
חלק מהכותרים שנשלחו:
  • Host - שם המחשב שבו השרת שאליו נשלחת הבקשה.
  • User Agent - השם של הדפדפן והגירסא שלו.
  • Accept - פירוט של פורמטי (מלשון Format) תוכן ההודעה שהדפדפן יכול לעבד בהתאם לעדיפות של כל אחד מהם. האות q מסמלת עדיפות של הפורמט.
    ניתן לראות בתמונה הנ"ל, שהפורמטים text/html, application/xhtml+xml, application/xml נמצאים בעדיפות 0.9. כל שאר הפורמטים (מבוטא ב- "*/*") נמצאים בעדיפות נמוכה יותר, 0.8.
  • Cookie - העוגיות שהשרת ביקש מהדפדפן לשמור. הדפדפן שולח לשרת את העוגיות ששמורות במחשב ה-Client.
Reply

לפני כל הכותרים מופיעה שורה הכוללת את:
  • גירסת פרוטוקול ה-HTTP שפורמט הרישה כתובה לפיו.
  • ה-HTTP Status Code שמסמל את תוצאת הודעת ה-Request.
חלק מהכותרים שנשלחו:
  • Server - השם של תוכנת השרת וגירסתו.
  • Content-Type - הפורמט של תוכן ההודעה.
  • Set-Cookie - השרת מבקש מהדפדפן לשמור עוגיה. העוגיה, הערך שלה ופרטים נוספים נמצאים בכותר זה.
בהודעת ה-Reply, אחרי הכותרים, מגיע התוכן שזה בדר"כ מסמך ה-xHTML שאנחנו מבקשים מהדפדפן להציג.
לכן מכאן מסיקים, שאחרי שהמערכת שבנינו שלחה לדפדפן תוכן להצגה - לא יהיה ניתן לשלוח יותר כותרים, כיוון שהם נמצאים ברישה (החלק הראשון) של ההודעה.
עובדה זו נכונה גם לכותרי Set-Cookie, שהרבה כותבי תוכנת Web לא מבינים מדוע מופיעה להם שגיאה כאשר הם מנסים לקבוע עוגיה אצל ה-Client.

כל הכותרים הנ"ל נקראים HTTP Headers, כיוון שהם מותאמים לפרוטוקול HTTP.
כותרים אחרים אפשר להכיר מחיפוש בגוגל.

אחד הדברים שחשוב להבנה זה שאפשר לשלוח כל כותר שה-Client או ה-Server יחשוק לשלוח.
אך מי שמקבל את ההודעה לא בהכרח יעבד אותם ; כלומר ייתכן ומקבל ההודעה יתעלם מכותרים מסוימים.
ראוי גם להוסיף שאין הבדל ניכר בין בקשות HTTP הנשלחות במתודת GET או POST או HEAD וכו'. ראה מבנה מתודת POST בבקשת HTTP

עד עכשיו הבנו את מבנה ההודעות שהשרת וה-Client מתקשרים איתן.
אבל איך מעובד הקוד של אפליקציית צד השרת שכתבנו?
פשוט מאוד:

תוכנת השרת (כמו Apache וכו') טוענת מודול של קוד צד שרת מסויים, כמו PHP, ASP, DOT NET וכד'.
כל פעם שהשרת מתבקש מה-Client להוציא את הפלט של קובץ הנתמך ע"י תוכנת צד השרת, השרת "יאמר" לתוכנת צד השרת לעבד את המידע שבקובץ המדובר.

אתן דוגמא מ-PHP שנכונה עבור כל שפת צד שרת אחרת:
נניח שה-Client מבקש את הקובץ "index.php".
תוכנת השרת מזהה שהקובץ הזה צריך להיות מעובד ע"י PHP ולכן מבקשת ממנו לעבד המידע שבקובץ.
כאשר PHP קורא את הקובץ ונתקל בצירוף התוים שמסמל את תחילת קוד ה-PHP (שזה בדרך-כלל "<?php"), הוא יתחיל מאותו הרגע להתייחס לכל מה שכתוב כקוד PHP, עד לצירוף התוים שמסמל את סוף קוד ה-PHP (שזה "?>").
בנוגע לכל השאר, הוא מתייחס אל זה כפלט ושולח את המידע לשרת כדי שיפלוט אותו החוצה. קוד המזוהה כקוד PHP אינו נפלט.


אם תרצו לראות איזה כותרים אתם שולחים לאתרים ואיזה כותרים הם שולחים בחזרה אליכם, יש תוספי דפדפן שמספקים את האפשרות הזו.
אני משתמש בדפדפן FF3, והתוספים שיכולים לבצע אנליזה ל-HTTP Headers הם:
  • Live HTTP Headers (איתו השתמשתי להצגת הדוגמא הנ"ל)
  • Tamper Data - מאפשר גם לשנות את ערך הכותרים שנשלחים.
  • HttpFox - גם כן תוסף מעולה
  • Firebug - בכלי ה- Network monitor
  • Web Developer
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 16:34

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר