Google is committed to advancing racial equity for Black communities. See how.

כיצד לטפל בהפניות מחדש

בחלק משפות התכנות יש הטמעות HTTP הדורשות טיפול מיוחד להפניות מחדש.

בתגובה לבקשת REST API, שרת ה- Nest API מחזיר הפניה מחדש. לקוח REST מזהה את ההפניה ומבקש את הדף אליו הופנה הלקוח. יישומי HTTP מסוימים אינם מעבירים את כותרת ההרשאה ל- URI שהופנה מחדש, והתוצאה היא שגיאה 401 בלתי מורשית.

לדוגמה, נניח שאתה מבקש foo.com. שרת foo.com מגיב עם הפניה מחדש ל bar.com. דוור או תלתל מעבירים את כותרת ההרשאה אל foo ואז לסרגל. יישומי HTTP אחרים, כמו זה של Golang ו- Python, אינם מעבירים אוטומטית את כותרת ה- Authorization ל- URI שהופנה מחדש.

איך זה עובד

תרשים הרצף הבא מראה מה קורה כאשר מתרחשת הפניה מחדש.

רצף הפניה מחדש

לשם השוואה, הנה מה שקורה כשלא מופיעה הפניה מחדש.

אין רצף להפניה מחדש

דוגמא

באופן כללי, זה נוהג קידוד טוב לצפות כי יישום ה- HTTP בשפה שלך עשוי שלא לעבור את כותרת ההרשאה.

הקוד שלך אמור למנוע את ההפניה האוטומטית ולבצע את שיחת ההפניה לאחר הוספת הכותרות בחזרה.

לדוגמה, ב- Go, אתה יכול לעשות זאת:

customClient := http.Client {
    CheckRedirect: func(redirRequest *http.Request, via []*http.Request)
    error {
        // Go's http.DefaultClient does not forward headers when a redirect 3xx
        // response is received. Thus, the header (which in this case contains the
        // Authorization token) needs to be passed forward to the redirect
        // destinations.
        redirRequest.Header = req.Header

        // Go's http.DefaultClient allows 10 redirects before returning an
        // an error. We have mimicked this default behavior.s
        if len(via) >= 10 {
            return errors.New("stopped after 10 redirects")
        }
        return nil
    },
}

לקבלת דוגמאות נוספות, ראה:

אחסן את המיקום שהופנה מחדש

זה גם שיטה מומלצת לאחסן את המיקום המנותב מחדש על בסיס משתמש. במילים אחרות, לאחר שמשתמש נכנס ומתקבלת הפניה מחדש, אחסן את המיקום firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ ובצע את כל הבקשות הבאות ישירות ל- URI זה.

אחסון המיקום המנותב חוסך זמן ומונע טעינת שרת מיותרת.

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

באמצעות סלסול לבדיקת ה- API

בעת שימוש בתלתל> = v7.58, אתה עלול לקבל 401 שגיאות לא מורשות משיחות ל- API הכוללות הפניות מחדש. החל מסלסול v7.58, כותרות הרשאות מותאמות אישית אינן מועברות לכתובת האתר להפניה המוחזרת על ידי ה- API.

כדי להסביר זאת על תלתל> = v7.58, להשתמש --location-trusted דגל עם שיחות כלשהן שורת הפקודה.