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 บุรุษไปรษณีย์หรือ Curl ส่งส่วนหัวการให้สิทธิ์ไปที่ foo แล้วไปที่แถบ การใช้งาน HTTP อื่นๆ เช่น Golang และ Python จะไม่ส่งส่วนหัวการให้สิทธิ์ไปยัง 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 นี้โดยตรง

การจัดเก็บตำแหน่งที่เปลี่ยนเส้นทางจะช่วยประหยัดเวลาและป้องกันการโหลดของเซิร์ฟเวอร์โดยไม่จำเป็น

ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการเปลี่ยนเส้นทางที่เกี่ยวข้องกับการ จำกัด อัตราดู ขีด จำกัด อัตราข้อมูล

การใช้ curl เพื่อทดสอบ API

เมื่อใช้ curl >= v7.58 คุณอาจได้รับข้อผิดพลาดที่ไม่ได้รับอนุญาต 401 รายการจากการเรียกไปยัง API ที่เกี่ยวข้องกับการเปลี่ยนเส้นทาง ตั้งแต่ curl v7.58 ส่วนหัวการให้สิทธิ์ที่กำหนดเองจะไม่ส่งต่อไปยัง URL การเปลี่ยนเส้นทางที่ส่งคืนโดย API

การบัญชีสำหรับการนี้ในขด> = v7.58 ใช้ --location-trusted ธงใด ๆ โทรบรรทัดคำสั่ง