Tôi đang tạo ứng dụng web/phonegap cho phiên bản Android cũ hơn (2.3.x). Tất cả mọi thứ hoạt động tuyệt vời cho đến khi tôi cố gắng thêm bất kỳ chuyển hướng máy chủ vào hỗn hợp. Đây là kịch bản:Vòng chuyển hướng vô hạn trên Android khi chuyển hướng từ máy chủ với AngularJS
Máy chủ (node.js) có tuyến đường đang nghe tại '/'. Khi tuyến đường này bị đánh, nó sẽ kiểm tra xem có phiên nào không. Nếu không có phiên, nó chuyển hướng đến/đăng nhập. Tốt, phần này hoạt động (máy chủ khôn ngoan, anyways).
Sự cố phát sinh khi khách hàng nhận được chuyển hướng. Bởi vì Android 2.3 không hỗ trợ history.pushState, nó rơi trở lại hashbangs. Điều này có nghĩa là AngularJS ghi đè url vào/#!/Login, điều này làm cho máy chủ yêu cầu '/', khiến máy chủ kiểm tra phiên và chuyển hướng đến '/ login', điều này khiến AngularJS ghi đè url thành/#!/đăng nhập .. vv .. vv .. vô thời hạn.
Bất kỳ ý tưởng nào về cách tôi có thể chuyển hướng từ máy chủ với AngularJS? Tôi có nên không xử lý logic này trong tuyến đường của mình mà thay vào đó hãy thử triển khai nó trên máy khách? Phải có một cách để xử lý điều này, tôi chắc chắn, nhưng tôi chỉ có thể không tìm ra nó.
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn!!
Tôi không chắc chắn Tôi hoàn toàn làm theo mô tả của bạn: nếu máy chủ đang phát hành chuyển hướng, trình duyệt đó sẽ nhận được, không phải là AngularJS. Nhưng có lẽ bạn đang nhận URL đó từ máy chủ qua xhr và gán cho $ location, sẽ không hoạt động: Từ tài liệu góc: "Dịch vụ vị trí $ cho phép bạn chỉ thay đổi URL, nó không cho phép bạn tải lại trang. Khi bạn cần thay đổi URL và tải lại trang hoặc điều hướng đến một trang khác, vui lòng sử dụng API cấp thấp hơn, $ window.location.href. " Ngoài ra, có lẽ bạn cần phải chuyển hướng đến '/ login #!/Login'? – Piran
Tôi ước tôi có thể cho thấy chính xác những gì đang xảy ra, nhưng Angular là "cướp" máy chủ của tôi chuyển hướng. Máy chủ chuyển hướng đến/đăng nhập và viết lại góc này như/#!/Login, khiến máy chủ nói "Bạn chưa đăng nhập, do đó hãy chuyển hướng đến đăng nhập". Các máy chủ được các tuyến đường như/(đó là nên, bởi vì đó là những gì Angular viết lại nó như). –