אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
בתקשורת בין הלקוח לשרת, השרת משיב עם קוד סטטוס HTTP 405
Method Not Allowed אם
שיטת בקשת ה-HTTP שהלקוח הציג מוכרת לשרת, אבל לא נתמכת על ידי משאב היעד. באופן דומה, ב-Apigee Edge, שרת הקצה העורפי יכול להגיב עם קוד הסטטוס 405 Method Not Allowed. של HTTP
ב-Apigee Edge, השרת העורפי אמור לשלוח תגובות 405 Method Not Allowed עם רשימת השיטות המותרות בכותרת Allow, בהתאם למפרט
RFC 7231, סעיף 6.5.5: 405 Method Not Allowed.
כותרת Allow צריכה להישלח בפורמט הבא:
Allow: HTTP_METHODS
לדוגמה, אם שרת הקצה העורפי מאפשר שימוש בשיטות GET, POST ו-HEAD, צריך לוודא שהכותרת Allow מכילה אותן באופן הבא:
Allow: GET, POST, HEAD
אם שרת הבק-אנד לא שולח את הכותרת Allow עם קוד הסטטוס 405 Method Not Allowed, של HTTP, Apigee מחזיר קוד סטטוס 502 Bad
Gateway של HTTP עם קוד השגיאה protocol.http.Response405WithoutAllowHeader לאפליקציית הלקוח. הפתרון המומלץ לטיפול בשגיאה הזו הוא לתקן את שרת הקצה העורפי כך שיפעל בהתאם למפרט
RFC 7231, section 6.5.5: 405 Method Not Allowed או להשתמש בטיפול בשגיאות כדי להחזיר קוד סטטוס של HTTP 405 Method Not Allowed כולל הכותרת Allow, כפי שמוסבר במדריך לפתרון בעיות
502 Bad Gateway - Response 405 without Allow header.
עם זאת, במקרים חריגים מסוימים, יכול להיות שלא תהיה אפשרות לתקן את הקצה העורפי או לשנות את ה-API Proxy באופן מיידי כדי לפתור את הבעיה.
במקרים כאלה, אפשר להגדיר זמנית את הכותרת ignore allow עבור המאפיין 405 HTTP.ignore.allow_header.for.405 ברמה של מעבד ההודעות. הגדרת המאפיין הזה לערך true מונעת מ-Apigee להחזיר את התגובה 502 Bad Gateway לאפליקציות לקוח, גם אם שרת הקצה העורפי שולח קוד סטטוס של HTTP 405 Method Not Allowed בלי הכותרת Allow.
אחרי שתהיה לכם אפשרות לתקן את שרת הקצה העורפי כדי לשלוח את קוד הסטטוס 405 Method
Not Allowed של HTTP עם הכותרת Allow, תוכלו להחזיר את המאפיין HTTP.ignore.allow_header.for.405 לערך ברירת המחדל שלו false.
לפני שמתחילים
לפני שמשתמשים בשלבים שמתוארים במאמר הזה, חשוב להבין את הנושאים הבאים:
- מומלץ לקרוא את המדריך בנושא - 502 Bad Gateway - response 405 without Allow header.
- אם אתם לא יודעים איך מגדירים מאפיינים ל-Edge ב-Private Cloud, כדאי לקרוא את המאמר איך מגדירים את Edge.
הגדרה של המאפיין ignore allow header לערך true ב-Message Processors עבור מאפיין 405
ב-Apigee Edge, הנכס HTTP.ignore.allow_header.for.405 מוגדר כ-false כברירת מחדל. ההגדרה הזו מאפשרת ל-Apigee Edge להחזיר את 502 Bad
Gateway עם קוד שגיאה protocol.http.Response405WithoutAllowHeader לאפליקציות הלקוח אם שרת הקצה העורפי שולח קוד סטטוס של HTTP 405 Method Not
Allowed בלי הכותרת Allow. אם רוצים למנוע מ-Apigee Edge לשלוח 502 Bad Gateway לאפליקציות לקוח, צריך להגדיר את הערך של המאפיין HTTP.ignore.allow_header.for.405 ל-trueon במעבדי ההודעות.
בקטע הזה מוסבר איך להגדיר את המאפיין HTTP.ignore.allow_header.for.405 לערך true במעבדי ההודעות, באמצעות הטוקן בהתאם לתחביר שמתואר במאמר
איך מגדירים את Edge.
-
במחשב של מעבד ההודעות, פותחים את הקובץ הבא בכלי לעריכה. אם הוא לא קיים, צריך ליצור אותו.
/opt/apigee/customer/application/message-processor.properties
לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפקודה הבאה:
vi /opt/apigee/customer/application/message-processor.properties
- מוסיפים לקובץ המאפיינים שורה בפורמט הבא:
conf_http_HTTP.ignore.allow_header.for.405=true
- שומרים את השינויים.
- מוודאים שקובץ המאפיינים נמצא בבעלות המשתמש
apigee, כמו שמוצג בהמשך:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- מפעילים מחדש את מעבד ההודעות כמו שמוצג בהמשך:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- אם יש לכם יותר ממעבד הודעות אחד, חוזרים על השלבים שלמעלה בכל מעבד ההודעות.
אימות ההגדרה ignore allow header for 405 property is set to true על מעבדי הודעות
בקטע הזה מוסבר איך לוודא שהנכס HTTP.ignore.allow_header.for.405 עודכן בהצלחה ל-true במעבדי ההודעות.
גם אם משתמשים באסימון conf_http_HTTP.ignore.allow_header.for.405 כדי לעדכן את הערך של המאפיין במעבד ההודעות, צריך לוודא שהמאפיין בפועל HTTP.ignore.allow_header.for.405 הוגדר לערך true.
- במחשב של מעבד ההודעות, מחפשים את המאפיין
HTTP.ignore.allow_header.for.405בספרייה/opt/apigee/edge-message-processor/confובודקים אם הוא הוגדר לערךtrue, כמו שמוצג בהמשך:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- אם הנכס יעודכן בהצלחה במעבד ההודעות, הפקודה שלמעלה
תציג את הערך של הנכס
HTTP.ignore.allow_header.for.405כ-trueבקובץhttp.properties, כמו שמוצג בהמשך:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- אם עדיין מוצג הערך של הנכס
HTTP.ignore.allow_header.for.405כ-false, צריך לוודא שביצעתם את כל השלבים שמפורטים במאמר הגדרת הכותרת ignore allow עבור נכס 405 לערך true במעבדי הודעות בצורה נכונה. אם פספסתם שלב כלשהו, צריך לחזור על כל השלבים בצורה נכונה. - אם עדיין אין לך אפשרות לשנות את הנכס
HTTP.ignore.allow_header.for.405, אפשר לפנות אל התמיכה של Apigee Edge.
הגדרה של ignore allow header for 405 property to false on Message Processors
בקטע הזה מוסבר איך להגדיר את המאפיין HTTP.ignore.allow_header.for.405 לערך ברירת המחדל שלו false
במעבד ההודעות, באמצעות הטוקן בהתאם לתחביר שמתואר במאמר איך מגדירים את Edge.
- בודקים אם המאפיין
HTTP.ignore.allow_header.for.405השתנה לערךtrue. כדי לעשות את זה, מחפשים את המאפיין הזה בספרייה/opt/apigee/edge-message-processor/confובודקים את הערך שלו באמצעות הפקודה הבאה:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- אם הנכס מוגדר ל-
trueב-מעבד בקשות, הפקודה שלמעלה צריכה להציג את הערך של הנכסHTTP.ignore.allow_header.for.405כ-trueבקובץhttp.properties, כמו שמוצג בהמשך:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- אם הפקודה שלמעלה מראה שהמאפיין
HTTP.ignore.allow_header.for.405מוגדר לערךfalse(ערך ברירת המחדל), לא צריך לעשות שום דבר נוסף. במקרה כזה, אפשר לדלג על השלבים הבאים. - אם המאפיין
HTTP.ignore.allow_header.for.405מוגדר לערךtrue, פועלים לפי השלבים הבאים כדי לחזור לערך ברירת המחדלfalse. במחשב של מעבד ההודעות, פותחים את הקובץ הבא בכלי לעריכה:
/opt/apigee/customer/application/message-processor.properties
לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפקודה הבאה:
vi /opt/apigee/customer/application/message-processor.properties
- מסירים את השורה הבאה מקובץ המאפיינים:
conf_http_HTTP.ignore.allow_header.for.405=true
- שומרים את השינויים.
- מוודאים שקובץ המאפיינים נמצא בבעלות המשתמש
apigee, כמו שמוצג בהמשך:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- מפעילים מחדש את מעבד ההודעות כמו שמוצג בהמשך:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- אם יש לכם יותר ממעבד הודעות אחד, חוזרים על השלבים שלמעלה בכל מעבד ההודעות.
אימות ההגדרה של המאפיין ignore allow header לערך false במעבדי הודעות עבור נכס 405
בקטע הזה מוסבר איך לוודא שהנכס HTTP.ignore.allow_header.for.405 עודכן בהצלחה ל-false במעבדי ההודעות.
למרות שמשתמשים באסימון
conf_http_HTTP.ignore.allow_header.for.405 כדי לעדכן את הערך ב-Message
Processor, צריך לוודא שהמאפיין בפועל HTTP.ignore.allow_header.for.405
הוגדר ל-false.
- במכונה של מעבד ההודעות, מחפשים את המאפיין
HTTP.ignore.allow_header.for.405בספרייה/opt/apigee/edge-message- processor/confובודקים אם הוא הוגדר לערךfalse, כמו שמוצג למטה:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- אם הנכס יעודכן בהצלחה במעבד ההודעות, הפקודה שלמעלה
תציג את הערך של הנכס
HTTP.ignore.allow_header.for.405כ-falseבקובץhttp.properties, כמו שמוצג בהמשך:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- אם עדיין מוצג הערך של המאפיין
HTTP.ignore.allow_header.for.405כ-true, צריך לוודא שביצעתם את כל השלבים שמפורטים במאמר הגדרת המאפיין ignore allow header לערך false ב-Message Processors כדי למנוע שגיאת 405 בצורה נכונה. אם פספסתם שלב כלשהו, צריך לחזור על כל השלבים בצורה נכונה. - אם עדיין אין לך אפשרות לשנות את הנכס
HTTP.ignore.allow_header.for.405, אפשר לפנות אל התמיכה של Apigee Edge.