מזהה אזור
REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, REGION_ID.r נכלל בכתובות URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
בדף ההפניה הזה מפורטות כותרות ה-HTTP שנתמכות, וגם מגבלות הבקשות והתגובות ב-App Engine. כדי להבין איך App Engine מקבל בקשות ושולח תשובות, אפשר לעיין במאמר בנושא איך בקשות מטופלות.
כותרות של בקשות
בקשת HTTP נכנסת כוללת את כותרות ה-HTTP שנשלחו על ידי הלקוח. מטעמי אבטחה, חלק מהכותרות עוברות ניקוי, שינוי או הסרה על ידי שרתי proxy ביניים לפני שהן מגיעות לאפליקציה.
כותרות שהוסרו מבקשות נכנסות
הכותרות הבאות מוסרות מבקשות נכנסות אם לקוח שולח אותן:
כותרות עם שמות שתואמים לתבנית
X-Google-*. תבנית השם הזו שמורה ל-Google.כותרות עם שמות שתואמים לכותרות ספציפיות ל-App Engine. רק התאמות מדויקות שלא תלויות באותיות רישיות יוסרו. לדוגמה, כותרות בשם
X-Appengine-CountryאוX-AppEngine-Countryיוסרו, אבל כותרות בשםX-Appengine-Cntryלא יוסרו.
Accept-EncodingConnectionKeep-AliveProxy-AuthorizationTETrailerTransfer-Encoding
לדוגמה, השרת עשוי לשלוח באופן אוטומטי תגובה דחוסה ב-gzip בהתאם לערך של כותרת הבקשה Accept-Encoding. האפליקציה עצמה לא צריכה לדעת אילו קידודים של תוכן הלקוח יכול לקבל.
כותרות ספציפיות ל-App Engine
כחלק מהשירות לאפליקציה, App Engine מוסיף את הכותרות הבאות לכל הבקשות:
X-Appengine-Country- המדינה שממנה נשלחה הבקשה, כקוד מדינה בפורמט ISO 3166-1
alpha-2.
מערכת App Engine קובעת את הקוד הזה מכתובת ה-IP של הלקוח. שימו לב שפרטי המדינה לא נלקחים ממסד הנתונים של WHOIS. יכול להיות שלכתובת IP עם פרטי מדינה במסד הנתונים של WHOIS לא יהיו פרטי מדינה בכותרת
X-Appengine-Country. האפליקציה צריכה לטפל בקוד המדינה המיוחדZZ(מדינה לא ידועה). X-Appengine-Region- שם האזור שממנו הגיעה הבקשה. הערך הזה רלוונטי רק בהקשר של המדינה שצוינה במאפיין
X -Appengine-Country. לדוגמה, אם המדינה היא 'US' והאזור הוא 'ca', האזור 'ca' הוא קליפורניה ולא קנדה. הרשימה המלאה של ערכי האזורים התקפים מופיעה בתקן ISO-3166-2. X-Appengine-City- שם העיר שממנה נשלחה הבקשה. לדוגמה, בקשה מהעיר מאונטיין ויו עשויה לכלול את ערך הכותרת
mountain view. אין רשימה קנונית של ערכים חוקיים לכותרת הזו. אם אי אפשר לזהות את העיר, ערך הכותרת מוגדר כ-?. X-Appengine-CityLatLong- קו הרוחב וקו האורך של העיר שממנה נשלחה הבקשה. מחרוזת כזו יכולה להיראות כמו "37.386051,-122.083851" לבקשה ממאונטיין ויו.
אם אי אפשר לזהות את העיר, ערך הכותרת מוגדר כ-
0.000000,0.000000. X-Cloud-Trace-Context- מזהה ייחודי של הבקשה שמשמש ל-Cloud Trace ול-Cloud Logging. אין אפשרות להשבית את הכותרת הזו או לבחור את קצב הדגימה למעקב, כי המעקב מתבצע באופן אוטומטי בכל האפליקציות בסביבה הרגילה של App Engine.
X-Forwarded-For: [CLIENT_IP(s)], [global forwarding rule IP]רשימה של כתובות IP שמופרדות בפסיקים, שדרכן הבקשה של הלקוח עברה. כתובת ה-IP הראשונה ברשימה הזו היא בדרך כלל כתובת ה-IP של הלקוח שיצר את הבקשה. כתובות ה-IP הבאות מספקות מידע על שרתי proxy שגם טיפלו בבקשה לפני שהיא הגיעה לשרת האפליקציה. לדוגמה:
X-Forwarded-For: clientIp, proxy1Ip, proxy2IpX-Forwarded-Proto [http | https]הערך שמוצג הוא
httpאוhttps, בהתאם לפרוטוקול שבו הלקוח השתמש כדי להתחבר לאפליקציה.מאזן העומסים של Google Cloud מפסיק את כל החיבורים של
https, ואז מעביר את התנועה למופעים של App Engine דרךhttp. לדוגמה, אם משתמש מבקש גישה לאתר שלכם דרךhttps://PROJECT_ID.REGION_ID.r.appspot.com, הערך של הכותרת X-Forwarded-Proto הואhttps.
בנוסף, יכול להיות ש-App Engine יגדיר את הכותרות הבאות, שמיועדות לשימוש פנימי ב-App Engine:
X-Appengine-HttpsX-Appengine-User-IPX-Appengine-Api-TicketX-Appengine-Request-Log-IdX-Appengine-Default-Version-HostnameX-Appengine-Timeout-Ms
שירותי App Engine עשויים להוסיף כותרות בקשה נוספות:
בקשות משירות Cron מוסיפות את הכותרת הבאה:
X-Appengine-Cron: trueפרטים נוספים זמינים במאמר בנושא הגנה על כתובות URL ל-cron.
אם אתם משתמשים בחבילת השירותים מדור קודם:
עבור רכיבי handler של
login:adminאוlogin:requiredשצוינו בקובץapp.yaml, App Engine מוסיף את קבוצת הכותרות הבאה:-
X-Appengine-User-Email, עם כותרת לדוגמה: "ange@example.com" X-Appengine-Auth-Domain,עם כותרת לדוגמה: "example.com"X-Appengine-User-ID, עם כותרת לדוגמה: "100979712376541954724"-
X-Appengine-User-Nickname, עם כותרת לדוגמה: ange -
X-Appengine-User-Organization, עם כותרת לדוגמה: example.com -
X-Appengine-User-Is-Admin, עם כותרת לדוגמה: '1'
-
השירות Task Queue מוסיף כותרות נוספות לבקשות שמספקות פרטים על המשימה בבקשה, ועל התור שאליו היא משויכת.
בקשות שמגיעות מאפליקציות אחרות של App Engine יכללו כותרת שמזהה את האפליקציה ששולחת את הבקשה, אם האפליקציה ששולחת את הבקשה משתמשת בשירות URL Fetch:
X-Appengine-Inbound-Appidפרטים נוספים מופיעים במאמרי העזרה בנושא זהות האפליקציה.
בקשת תגובות
התיעוד הזה של כותרות HTTP רלוונטי רק לתשובות לבקשות HTTP נכנסות. יכול להיות שהתשובה תשתנה לפני שהיא תוחזר ללקוח.
הכותרות הוסרו
המערכת מתעלמת מהכותרות הבאות ומסירה אותן מהתגובה:
ConnectionContent-Encoding*Content-LengthDateKeep-AliveProxy-AuthenticateServerTrailerTransfer-EncodingUpgrade
* יכול להיות שיתווסף מחדש אם התגובה תכווץ על ידי App Engine.
גם כותרות עם תווים שאינם מסוג ASCII בשם או בערך שלהן מוסרות.
כותרות שנוספו או הוחלפו
הכותרות הבאות מתווספות לתגובה או מוחלפות בה:
Cache-Control,ExpiresוגםVaryהכותרות האלה מציינות מדיניות שמירה במטמון לשרתי proxy באינטרנט (כמו קצה קדמי של Google וספקי אינטרנט) ולדפדפנים. אם האפליקציה שלכם מגדירה את כותרות התגובה האלה, הן בדרך כלל לא ישתנו, אלא אם האפליקציה מגדירה גם כותרת
Set-Cookie, או שהתגובה נוצרת עבור משתמש שמחובר באמצעות חשבון אדמין.אם האפליקציה מגדירה כותרת תגובה
Set-Cookie, הכותרתCache-Controlתוגדר לערךprivate(אם היא לא כבר מגבילה יותר) והכותרתExpiresתוגדר לתאריך הנוכחי (אם היא לא כבר בעבר). בדרך כלל, ההגדרה הזו מאפשרת לדפדפנים לשמור את התגובה במטמון, אבל לא לשרתי proxy ביניים. הסיבה לכך היא שיקולי אבטחה. אם התגובה הייתה נשמרת במטמון באופן ציבורי, משתמש אחר היה יכול לבקש את אותו המשאב ולקבל את קובץ ה-Cookie של המשתמש הראשון.אם האפליקציה לא מגדירה את כותרת התגובה
Cache-Control, השרת עשוי להגדיר אותה ל-privateולהוסיף כותרתVary: Accept-Encoding.מידע נוסף על שמירת נתונים במטמון, כולל רשימת הערכים של
Varyשנתמכים ב-Google Frontend, זמין במאמר בנושא שמירת תגובות במטמון.Content-Encodingבהתאם לכותרות הבקשה ולתגובה
Content-Type, יכול להיות שהשרת יכווץ באופן אוטומטי את גוף התגובה, כפי שמתואר למעלה. במקרה הזה, הוא מוסיף כותרתContent-Encoding: gzipכדי לציין שגוף ההודעה דחוס. פרטים נוספים זמינים בקטע בנושא דחיסת תגובות.Content-LengthאוTransfer-Encodingהשרת תמיד מתעלם מהכותרת
Content-Lengthשהאפליקציה מחזירה. היא תגדיר אתContent-Lengthלאורך הגוף (אחרי הדחיסה, אם הדחיסה חלה), או תמחק אתContent-Lengthותשתמש בקידוד העברה בחלקים (תוסיף כותרתTransfer-Encoding: chunked). אם הערך שלContent-Lengthמוגדר בצורה שגויה בסביבות זמן ריצה מהדור השני, מערכת App Engine מחזירה תגובה מסוג 500.Dateהגדרת התאריך והשעה הנוכחיים.
Server- הוגדר לערך
Google Frontend. שרת הפיתוח מגדיר את הערך הזה ל-Development/x, כאשר x הוא מספר הגרסה.
אם אתם ניגשים לדפים דינמיים באתר שלכם כשאתם מחוברים באמצעות חשבון אדמין, App Engine כולל נתונים סטטיסטיים לכל בקשה בכותרות התגובה:
X-Appengine-Resource-Usage- המשאבים שבהם נעשה שימוש בבקשה, כולל זמן בצד השרת כמספר אלפיות השנייה.
תשובות עם נתונים סטטיסטיים על השימוש במשאבים לא יישמרו במטמון.
כותרות התגובה שמוגדרות בהגדרות האפליקציה
אפשר להגדיר כותרות תגובה מותאמות אישית של HTTP לכל כתובת URL עבור נתיבים דינמיים וסטטיים בקובץ ההגדרות של האפליקציה. פרטים נוספים זמינים בקטעים http_headers במסמכי ההגדרה.