Google cam kết thúc đẩy công bằng chủng tộc cho các cộng đồng Đen. Xem thế nào.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Cách xử lý chuyển hướng

Một số ngôn ngữ lập trình có triển khai HTTP yêu cầu xử lý đặc biệt cho các chuyển hướng.

Đáp lại yêu cầu API REST, máy chủ Nest API trả về chuyển hướng. Máy khách REST phát hiện chuyển hướng và yêu cầu trang mà máy khách được chuyển hướng đến. Một số triển khai HTTP không chuyển tiếp tiêu đề Ủy quyền đến URI được chuyển hướng và điều này dẫn đến lỗi Không được phép 401.

Ví dụ: giả sử bạn yêu cầu foo.com. Máy chủ foo.com phản hồi với chuyển hướng đến bar.com. Người đưa thư hoặc Curl chuyển tiêu đề Ủy quyền cho foo và sau đó vào thanh. Các triển khai HTTP khác, chẳng hạn như Golang và Python, không tự động chuyển tiêu đề Ủy quyền cho URI được chuyển hướng.

Làm thế nào nó hoạt động

Sơ đồ trình tự sau đây cho thấy những gì xảy ra khi chuyển hướng xảy ra.

Trình tự chuyển hướng

Để so sánh, đây là những gì xảy ra khi chuyển hướng không xảy ra.

Không có chuỗi chuyển hướng

Thí dụ

Nói chung, đó là một cách thực hành mã hóa tốt để dự đoán rằng việc triển khai HTTP của ngôn ngữ của bạn có thể không vượt qua tiêu đề Ủy quyền.

Mã của bạn sẽ ngăn chuyển hướng tự động và thực hiện cuộc gọi chuyển hướng sau khi thêm lại các tiêu đề.

Ví dụ: trong Go, bạn có thể làm điều này:

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
    },
}

Để biết thêm ví dụ, xem:

Lưu trữ vị trí chuyển hướng

Đó cũng là một cách thực hành tốt nhất để lưu trữ vị trí được chuyển hướng trên cơ sở mỗi người dùng. Nói cách khác, sau khi người dùng đăng nhập và nhận được chuyển hướng, hãy lưu trữ firebase-apiserver03-tah01-iad01.dapi.production.nest.com:9553/ và thực hiện tất cả các yêu cầu tiếp theo trực tiếp vào URI này.

Lưu trữ vị trí được chuyển hướng giúp tiết kiệm thời gian và ngăn tải máy chủ không cần thiết.

Để tìm hiểu thêm về cách chuyển hướng liên quan đến giới hạn tốc độ, hãy xem Giới hạn tốc độ dữ liệu .

Sử dụng curl để kiểm tra API

Khi sử dụng curl> = v7.58, bạn có thể nhận được 401 lỗi trái phép từ các cuộc gọi đến API liên quan đến chuyển hướng. Kể từ curl v7.58, các tiêu đề Ủy quyền tùy chỉnh không được chuyển tiếp tới URL chuyển hướng được API trả về.

Để giải thích điều này trên curl> = v7.58, hãy sử dụng cờ --location-trusted với bất kỳ lệnh gọi dòng lệnh nào.