הגדרת כותרת התעלמות מההתעלמות עבור נכס 405 במעבדי הודעות

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

בתקשורת בין שרת לקוח, שרת מגיב עם קוד סטטוס HTTP 405 Method Not Allowed, ה-method של בקשת ה-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 עם קוד הסטטוס של ה-HTTP 405 Method Not Allowed, ואז Apigee מחזירה את קוד הסטטוס 502 Bad Gateway של HTTP עם קוד השגיאה protocol.http.Response405WithoutAllowHeader לאפליקציית לקוח. הפתרון המומלץ לטיפול בשגיאה הזו הוא כדי לתקן את שרת הקצה העורפי כדי לפעול בהתאם למפרט RFC 7231, סעיף 6.5.5: 405 Method Not Allowed או להשתמש בטיפול בתקלה כדי להשיב עם קוד המצב של HTTP 405 Method Not Allowed, כולל כותרת Allow, כמו שמוסבר במדריך לפתרון בעיות 502 Bad Gateway - Response 405 without Allow header.

עם זאת, במקרים חריגים מסוימים, ייתכן שלא ניתן יהיה לתקן את הקצה העורפי או לשנות את שרת Proxy ל-API כדי לטפל בבעיה הזו באופן מיידי.

במקרים כאלה, אפשר להגדיר את כותרת ההרשאה להתעלמות עבור המאפיין 405 HTTP.ignore.allow_header.for.405 ב- רמת מעבד ההודעות באופן זמני. אם המאפיין הזה מוגדר ל-true, אי אפשר להשתמש ב-Apigee מהחזרת התגובה 502 Bad Gateway לאפליקציות לקוח, גם אם שרת הקצה העורפי שולח את קוד הסטטוס 405 Method Not Allowed של HTTP ללא כותרת Allow.

ברגע שמתקנים את שרת הקצה העורפי כך שישלח את קוד הסטטוס 405 Method Not Allowed של HTTP עם הכותרת Allow, אפשר להחזיר את הנכס למצב הקודם HTTP.ignore.allow_header.for.405 לערך ברירת המחדל שלו false.

לפני שמתחילים

לפני שתשתמשו בשלבים שבמסמך הזה, חשוב שתוודאו שאתם מבינים את הנושאים הבאים:

הגדרת התעלמות מכותרת ההרשאה של מאפיין 405 כ-TRUE במעבדי הודעות

ב-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 עד true בהודעה מעבדים.

בקטע הזה מוסבר איך להגדיר את הנכס HTTP.ignore.allow_header.for.405 אל true ב- מעבדי הודעות, באמצעות האסימון בהתאם לתחביר המתואר איך מגדירים את Edge?

  1. במעבד הודעות, פותחים את הקובץ הבא בעורך. אם לא ניתן כבר קיים, אז יוצרים אותו.

    /opt/apigee/customer/application/message-processor.properties
    

    לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפרטים הבאים:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. מוסיפים לקובץ המאפיינים שורה בפורמט הבא:
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  3. שומרים את השינויים.
  4. צריך לוודא שקובץ המאפיינים נמצא בבעלות של המשתמש ב-apigee, כמו שמוצג בהמשך:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. צריך להפעיל מחדש את מעבד ההודעות כפי שמוצג בהמשך:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. אם יש לכם יותר ממעבד הודעות אחד, צריך לחזור על השלבים שלמעלה בכל הודעות מעבדים.

אימות כותרת ההרשאה של ההרשאה לנכס 405 מוגדר כ-True במעבדי הודעות

בקטע הזה מוסבר איך לאמת שהנכס התצורה HTTP.ignore.allow_header.for.405 עודכנה בהצלחה ל-true במעבדי ההודעות.

למרות שמשתמשים באסימון conf_http_HTTP.ignore.allow_header.for.405 כדי לעדכן ערך המאפיין במעבד ההודעות, עליכם לבדוק אם הנכס הערך שהוגדר בשדה HTTP.ignore.allow_header.for.405 הוא true.

  1. במעבד הודעות, מחפשים את המאפיין. 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
    
  2. אם המאפיין עודכן בהצלחה במעבד ההודעות, הפקודה שלמעלה צריך להציג את הערך של המאפיין HTTP.ignore.allow_header.for.405 בתור true בקובץ http.properties כפי שמוצג בהמשך:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
    
  3. אם עדיין אפשר לראות את ערך הנכס HTTP.ignore.allow_header.for.405 בתור false לאחר מכן יש לאמת שהשלמת את כל השלבים המפורטים הגדרת התעלמות מכותרת ההרשאה של נכס 405 כ-TRUE ב- מעבדי הודעות בצורה תקינה. אם פספסת שלב כלשהו, יש לחזור על כל השלבים שוב בצורה נכונה.
  4. אם עדיין לא ניתן לשנות את הנכס HTTP.ignore.allow_header.for.405, לאחר מכן צריך לפנות אל התמיכה של Apigee Edge.

הגדרת התעלמות מכותרת ההרשאה של מאפיין 405 ל-FALSE במעבדי הודעות

בקטע הזה מוסבר איך להגדיר את הנכס HTTP.ignore.allow_header.for.405 לערך ברירת המחדל false במעבד ההודעות, באמצעות האסימון בהתאם לתחביר שמתואר איך מגדירים את Edge?

  1. יש לבדוק אם הנכס 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
    
  2. אם המאפיין מוגדר לערך 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
    
  3. אם הפקודה שלמעלה מראה שהמאפיין HTTP.ignore.allow_header.for.405 מוגדר ל-false (ערך ברירת המחדל), אז לא צריך לעשות שום דבר נוסף. כלומר, מדלגים על השלבים הבאים.
  4. אם המאפיין HTTP.ignore.allow_header.for.405 מוגדר ל-true, לאחר מכן מבצעים את השלבים הבאים כדי לחזור לערך ברירת המחדל שלו false.
  5. במעבד הודעות, פותחים את הקובץ הבא בעורך:

    /opt/apigee/customer/application/message-processor.properties
    

    לדוגמה, כדי לפתוח את הקובץ באמצעות vi, מזינים את הפרטים הבאים:

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. מסירים את השורה הבאה מקובץ המאפיינים:
    conf_http_HTTP.ignore.allow_header.for.405=true
    
  7. שומרים את השינויים.
  8. צריך לוודא שקובץ המאפיינים נמצא בבעלות של המשתמש ב-apigee, כמו שמוצג בהמשך:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. צריך להפעיל מחדש את מעבד ההודעות כפי שמוצג בהמשך:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. אם יש לכם יותר ממעבד הודעות אחד, צריך לחזור על השלבים שלמעלה בכל הודעות מעבדים.

אימות כותרת ההרשאה של נכס 405 מוגדר כ-FALSE במעבדי הודעות

בקטע הזה מוסבר איך לאמת שהנכס התצורה HTTP.ignore.allow_header.for.405 עודכנה בהצלחה ל-false במעבדי ההודעות.

גם אם משתמשים באסימון conf_http_HTTP.ignore.allow_header.for.405 כדי לעדכן את הערך בהודעה מעבד המידע, עליך לבדוק אם הנכס HTTP.ignore.allow_header.for.405 בפועל הוגדר כ-false.

  1. במעבד הודעות, מחפשים את המאפיין. 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
    
  2. אם המאפיין עודכן בהצלחה במעבד ההודעות, הפקודה שלמעלה צריך להציג את הערך של המאפיין HTTP.ignore.allow_header.for.405 בתור false בקובץ http.properties כפי שמוצג בהמשך:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
    
  3. אם עדיין אפשר לראות את ערך הנכס HTTP.ignore.allow_header.for.405 בתור true, לאחר מכן צריך לוודא שביצעת את כל השלבים שמפורטים הגדרת התעלמות מכותרת ההרשאה של מאפיין 405 ל-FALSE במעבדי הודעות בצורה נכונה. אם פספסתם שלב כלשהו, יש לחזור על השלבים האלה שוב בצורה נכונה.
  4. אם עדיין לא ניתן לשנות את הנכס HTTP.ignore.allow_header.for.405, לאחר מכן צריך לפנות אל התמיכה של Apigee Edge.