Chúng tôi có nhiều bản sao của ứng dụng web được triển khai trên nhiều đường dẫn trên cùng một tên miền.
Ví dụ:Internet Explorer gửi sai cookie khi đường dẫn chồng lên nhau
Mỗi trường hợp duy trì một tập hợp các tập tin cookie mỗi một định nghĩa của nó path
như "/" + .getWebDirRoot()
- ví dụ: /abc
, /xyz
, /abc123
Khi thực hiện dòng sau:
- Đăng nhập vào http://mydomain.com/abc
- Thực hiện một số hoạt động
- Thoát
- Đăng nhập vào http://mydomain.com/abc123
- Thực hiện một số hoạt động < - Không
Bước cuối cùng không thành công ince IE
gửi cho chúng tôi cookie không chính xác - nó sẽ gửi cho http://mydomain.com/abc thay vì một cho http://mydomain.com/abc123
Điều này không xảy ra trong FireFox. (Và tôi đã không thử bất kỳ trình duyệt nào khác).
Đây có phải là hành vi đã biết của IE
(Tôi đã thử nghiệm IE9
và IE8
)?
Có cách nào để khắc phục nó (theo cách có lập trình) không?
Lưu ý: Chỉ cần làm rõ, điều này không xảy ra khi chuyển đổi từ http://mydomain.com/abc để http://mydomain.com/xyz - hành vi bị nghiêm cấm để dòng chảy nơi currentUrl.startswith(urlAssociatedWithCookie) == true
Tôi đã kiểm tra các hành vi sử dụng Fiddler - Tôi thấy rõ HTTP yêu cầu cho abc123
được gửi với giá trị của cookie thuộc về abc
.
Tôi cũng đã kiểm tra các cookie trên FireFox và chúng như mong đợi - một cookie được tạo trên mỗi đường dẫn.
Cám ơn một cuộc điều tra kỹ lưỡng. Biết được điều này có lẽ sẽ giúp tôi tiết kiệm rất nhiều kịch tính trong tương lai. –
Điều đó cũng xảy ra với tôi (và lấy cùng một kết luận). Cảm ơn bạn đã tiết kiệm thời gian để tìm thông số kỹ thuật và mô tả về lỗi trong IE! – helios
Đối với mọi người triển khai trên Apache Tomcat: Bắt đầu với Tomcat7 Tomcat tự động thêm dấu gạch chéo ("/") vào đường dẫn cookie để tránh sự cố này. Bạn có thể vô hiệu hóa tính năng này trong 'context.xml' của bạn bằng cách thiết lập' sessionCookiePathUsesTrailingSlash = false' (xem http://tomcat.apache.org/tomcat-7.0-doc/config/context.html) –