Bạn không thể. Đó không phải là cách HTTP hoạt động. Đầu tiên, "chuyển hướng" chỉ là mã trạng thái 301, 302 hoặc (kể từ HTTP 1.1) 307 với tiêu đề Location
được đặt thành URL mà khách hàng sẽ truy cập. Đó là ứng dụng khách bắt đầu yêu cầu tới URL đó, do đó bạn không thể kiểm soát những tiêu đề mà họ gửi.
Thứ hai, HTTP là không quốc tịch, do đó, tiêu đề Authorization
được gửi trong một số phản hồi tại một số điểm có số mang bất kỳ điều gì xảy ra trong bất kỳ yêu cầu nào trong tương lai. Trình duyệt web và các ứng dụng HTTP khác chạy quanh bản chất không trạng thái của HTTP bằng cách sử dụng các phiên ở phía máy chủ và cookie ở phía máy khách. Máy khách gửi cookie đến máy chủ với yêu cầu. Cookie khớp với một mục trong kho lưu trữ phiên trên máy chủ và máy chủ tải lên dữ liệu từ phiên đó để cung cấp cho giao diện như thể trạng thái được duy trì.
Thứ ba, cookie không hoạt động trong trường hợp này, vì chúng là miền bị ràng buộc và không được gửi cùng với các yêu cầu đến tên miền mà chúng không bắt nguồn từ đó. Vì vậy, ngay cả khi bạn đã tạo phiên để duy trì ủy quyền, trang web khác sẽ không bao giờ thấy nó.
FWIW, tiền đề cơ bản ở đây, chia sẻ trạng thái xác thực với một tên miền khác, là chính xác những công nghệ như OAuth được phát triển. Vì vậy, nghiên cứu trực tiếp trong tương lai theo hướng đó.
Nguồn
2013-08-02 21:14:10
Hãy cho tôi biết thêm về 'phía khách hàng chuyển hướng thủ công này (có thể vẫn ổn vì bạn vẫn đang thực hiện cuộc gọi AJAX).' – user1265146
Tôi thích ý tưởng này ... hãy cho tôi biết thêm về 'phía khách hàng chuyển hướng thủ công này (có thể là ok vì bạn đang thực hiện cuộc gọi AJAX)'. Tôi sẽ cần phải đặt tiêu đề auth và có nó để mở trong một cửa sổ hoặc tab mới. – user1265146
@ user1265146 - "thủ công" như nhận được phản hồi 200 bình thường từ máy chủ của bạn có chứa một cái gì đó như '{header: XXXX, location: url}' và thực hiện yêu cầu AJAX thứ hai cho vị trí đó.Vì bạn có thể muốn đăng lên miền khác, bạn có thể không thực hiện được yêu cầu đó (trừ khi miền khác hỗ trợ CORS). –