בדף הזה מוסבר איך לשלוח בקשות HTTP ו-HTTPS ולקבל תגובות באמצעות שירות אחזור של כתובות אתרים.
כברירת מחדל, App Engine משתמש ב-URL Fetch לכל הבקשות היוצאות בסביבת זמן הריצה של Python 2. עם זאת, כדי להשתמש ב-URL Fetch בסביבת זמן ריצה של Python נתמכת, צריך לקרוא במפורש לספרייהurlfetch. כשמשתמשים בספריית urlfetch, יכול להיות שהקריאות לשרת המטא-נתונים ייכשלו, מה שיוביל לבעיות ביצירת טוקנים לצורך הרשאה.
Requests
אפשר להשתמש בשירות אחזור של כתובות אתרים או בספריות אידיומטיות של שפות כדי להנפיק בקשות יוצאות.
ב-Python, אפשר להשתמש ישירות בספרייהurlfetch או בספריות urllib.request או requests כדי לשלוח בקשות HTTP.
פרוטוקולים של בקשות
אפליקציה יכולה לאחזר כתובת URL באמצעות HTTP או HTTPS. הפרוטוקול שבו צריך להשתמש נקבע לפי הפרוטוקול בכתובת ה-URL של היעד.
כתובת ה-URL שאותה רוצים לאחזר יכולה להשתמש בכל מספר יציאה בטווחים הבאים:
80-90440-4501024-65535
אם היציאה לא מוזכרת בכתובת ה-URL, היא משתמעת מהפרוטוקול. בקשות HTTP מתרחשות ביציאה 80, ובקשות HTTPS מתרחשות ביציאה 443.
שיטות בקשה
אם אתם שולחים בקשות דרך שירות אחזור של כתובות אתרים, אתם יכולים להשתמש בכל אחת משיטות ה-HTTP הבאות:
GETPOSTPUTHEADDELETEPATCH
בקשה יכולה לכלול כותרות HTTP, ובבקשות POST, PUT ו-PATCH, מטען ייעודי (payload).
בקשת העברת בקשה דרך שרת proxy
שימו לב: שירות אחזור של כתובות אתרים משתמש ב-proxy שתואם ל-HTTP/1.1 כדי לאחזר את התוצאה.
כדי למנוע מצב שבו אפליקציה גורמת לרקורסיה אינסופית של בקשות, אסור למטפל בבקשות לאחזר את כתובת ה-URL שלו. עדיין אפשר לגרום לרקורסיה אינסופית באמצעים אחרים, לכן צריך לנקוט משנה זהירות אם האפליקציה יכולה לאחזר בקשות לכתובות URL שסופקו על ידי המשתמש.
כותרות של בקשות
האפליקציה יכולה להגדיר כותרות HTTP לבקשה היוצאת.
לדוגמה, כששולחים בקשת HTTP POST, אם לא מגדירים במפורש כותרת Content-Type, הכותרת מוגדרת כ-x-www-form-urlencoded.
זהו סוג התוכן שמשמש בטפסים באינטרנט.
מסיבות אבטחה, אי אפשר לשנות את הכותרות הבאות באמצעות האפליקציה:
Content-LengthHostVaryViaX-Appengine-Inbound-AppidX-Forwarded-ForX-ProxyUser-IP
מערכת App Engine מגדירה את הכותרות האלה לערכים מדויקים לפי הצורך. לדוגמה, App Engine מחשב את הכותרת Content-Length מנתוני הבקשה ומוסיף אותה לבקשה לפני השליחה.
הכותרות הבאות מציינות את מזהה האפליקציה של האפליקציה ששולחת את הבקשה:
-
User-Agent. אפשר לשנות את הכותרת הזו, אבל App Engine יוסיף מחרוזת מזהה כדי לאפשר לשרתים לזהות בקשות של App Engine. המחרוזת שנוספת היא בפורמט"AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", שבוAPPIDהוא מזהה האפליקציה. -
X-Appengine-Inbound-Appid. אי אפשר לשנות את הכותרת הזו, והיא מתווספת באופן אוטומטי אם הבקשה נשלחת דרך שירות URL Fetch, כשהפרמטר follow redirects מוגדר לערךFalse.
זמן קצוב לתפוגת הבקשה
אפשר להגדיר מועד אחרון או זמן קצוב לתפוגה לבקשה. כברירת מחדל, הזמן הקצוב לתפוגה של בקשה הוא 10 שניות.
אפשר לשלוח בקשות סינכרוניות ובקשות אסינכרוניות. ההתנהגות הבאה חלה על URL Fetch API:
- בקשות סינכרוניות: הקריאה להבאה ממתינה עד שהמארח המרוחק מחזיר תוצאה, ואז מחזירה את השליטה לאפליקציה. אם חורגים מזמן ההמתנה המקסימלי של קריאת הנתונים, הקריאה מעלה חריגה.
- בקשות אסינכרוניות: שירות אחזור של כתובות אתרים מתחיל את הבקשה ואז מחזיר מיד אובייקט. האפליקציה יכולה לבצע משימות אחרות בזמן שכתובת ה-URL מאוחזרת. כשהאפליקציה צריכה את התוצאות, היא קוראת ל-method באובייקט, שממתין לסיום הבקשה אם יש צורך בכך, ואז מחזיר את התוצאה. אם יש בקשות URL Fetch בהמתנה כשמטפל הבקשות יוצא, שרת האפליקציה ממתין עד שכל הבקשות שנותרו יחזרו או יגיעו למועד האחרון שלהן לפני שהוא מחזיר תגובה למשתמש.
חיבורים מאובטחים ו-HTTPS
האפליקציה יכולה לאחזר כתובת URL בצורה מאובטחת באמצעות HTTPS כדי להתחבר לשרתים מאובטחים. נתוני הבקשה והתגובה מועברים ברשת בצורה מוצפנת.
כברירת מחדל, שרת ה-proxy של URL Fetch מאמת את המארח שאליו הוא מתחבר. ההתנהגות הזו מאפשרת ל-API לזהות התקפות אדם בתווך בין App Engine לבין המארח המרוחק כשמשתמשים ב-HTTPS.
תשובות
אם אתם משתמשים ב-URL Fetch API, שימו לב ששירות אחזור של כתובות אתרים מחזיר את כל נתוני התגובה, כולל התגובה, קוד התגובה, הכותרות והגוף.
כברירת מחדל, אם שירות אחזור של כתובות אתרים מקבל תגובה עם קוד הפניה אוטומטית, השירות יפעל לפי ההפניה האוטומטית. השירות יבצע עד חמש הפניות אוטומטיות, ואז יחזיר את המשאב הסופי. אפשר להנחות את שירות אחזור של כתובות אתרים לא לעקוב אחרי הפניות אוטומטיות, ובמקום זאת להחזיר תגובת הפניה אוטומטית לאפליקציה.
שימוש באחזור כתובות URL בשרת הפיתוח
כשהאפליקציה פועלת בשרת הפיתוח של App Engine במחשב, קריאות לשירות אחזור של כתובות אתרים מטופלות באופן מקומי. שרת הפיתוח מאחזר כתובות URL על ידי יצירת קשר ישירות עם מארחים מרוחקים מהמחשב שלכם, באמצעות כל הגדרת רשת שהמחשב שלכם משתמש בה כדי לגשת לאינטרנט.
כשבודקים את התכונות של האפליקציה שמאחזרות כתובות URL, צריך לוודא שלמחשב יש גישה למארחים המרוחקים.
מכסות ומגבלות של אחזור כתובות URL
מידע על מכסות של שירות אחזור של כתובות אתרים זמין במאמר בנושא מכסות. כדי לראות את השימוש הנוכחי במכסה של האפליקציה, עוברים לדף הפרטים של המכסה במסוףGoogle Cloud .
בנוסף, המכסות הבאות חלות על השימוש בשירות אחזור של כתובות אתרים:
| הגבלה | סכום |
|---|---|
| גודל הבקשה | 10 מגה-בייט |
| גודל כותרת הבקשה | 16KB (הערה: המגבלה הזו מגבילה את האורך המקסימלי של כתובת ה-URL שאפשר לציין בכותרת) |
| גודל התשובה | 32 מגה-בייט |