Tôi có trang web ASP.NET 2.0 lưu trữ ID của người dùng trong phiên để cho biết rằng họ đã đăng nhập. Trong một số trường hợp, người dùng dường như không đăng nhập được. đã theo dõi lưu lượng truy cập ở Fiddler và một số chi tiết tôi đã tìm thấy:Cookie phiên ASP.net bị mất hoặc bị xóa
- Sự cố 100% có thể lặp lại trên máy tính xách tay cũ khi chạy IE7 và máy tính xách tay của người quản lý dự án khi chạy IE7. Vấn đề không bao giờ xảy ra trên máy tính xách tay hiện tại của tôi đang chạy IE7, hoặc bất kỳ máy tính xách tay nào khi chạy FF.
- Sự cố chỉ xảy ra trong sản xuất - không phát triển, dàn dựng nội bộ hoặc dàn dựng khách hàng. Sản xuất là môi trường cân bằng tải duy nhất, nhưng độ lặp lại được lưu ý ở trên làm cho tôi cân bằng tải câu hỏi như một yếu tố.
- Khi trang đặt Phiên ("ID") = 1 gửi phản hồi cho khách hàng, tôi có thể thấy tiêu đề "Đặt cookie" trong mọi trường hợp, tạo cookie ASP.Net_Session_Id (và đó là HttpOnly).
- Các yêu cầu tiếp theo đối với máy chủ sẽ gửi cookie đó trong tiêu đề trên các máy không hiển thị sự cố, nhưng không phải trên máy, hoặc cookie bị xóa hoặc tiêu đề "Đặt cookie" bị bỏ qua.
- Cách đăng nhập hoạt động như sau: một trang trên www.DomainX.com có khung nội tuyến. Nguồn của iframe đó là một trang trên login.DomainY.com. Một loạt các trang được cung cấp từ login.DomainY.com đưa người dùng thông qua quá trình đăng nhập/đăng ký. Bước cuối cùng của login.DomainY.com là chuyển hướng đến một trang trở lại trên www.DomainX.com, bao gồm ID của người dùng trong chuỗi truy vấn. Trang này trên www.DomainX.com thường lưu trữ ID trong phiên và sau đó chạy một số JS để chuyển hướng tài liệu cấp cao nhất đến một trang mới, do đó đưa người dùng ra khỏi khung nội tuyến. Đây là một quá trình đã hoạt động trong nhiều năm, với một vài giá trị của DomainX.com. Một điều có thể khác ở đây là trong trường hợp này, JS đơn giản phá hủy iframe và một số chứa div.
- Một sự khác biệt tôi thấy giữa các tình huống xảy ra sự cố và vị trí không nằm trong cookie của Google Analytics. Có sự khác biệt khi login.DomainY.com/FinalStep.aspx thực hiện chuyển hướng của nó tới www.DomainX.com/SaveTheID.aspx bên trong khung nội tuyến. Khi sự cố không xảy ra, yêu cầu SaveTheID.aspx bao gồm nhiều cookie Google Analytics khác nhau (__utma, __utmz, v.v.). Khi sự cố xảy ra, yêu cầu này không bao gồm tất cả cookie GA (thiếu __utma, __utmz và __utmb).
- Sản xuất là môi trường duy nhất có đăng nhập.DomainY.com chạy dưới SSL, vì vậy tôi nghĩ rằng có thể có liên quan. Nhưng chúng tôi tạm thời thiết lập bản sao đăng nhập của chúng tôi.DomainY.com để sử dụng SSL và điều đó không có hiệu lực.
Bất kỳ ý tưởng nào có thể gây ra điều này?
Chỉnh sửa: môi trường sản xuất có các miền của www.DomainX.com và DomainX.com. Có một vấn đề khác đã biết với các cookie không được đặt cho cả hai tên miền đó. Có thể điều này là có liên quan, nhưng tôi sẽ không thể kiểm tra cho đến khi sửa chữa đó đi vào sản phẩm.
Bạn đã xem lưu lượng truy cập mạng bằng Fiddler - http://www.fiddler2.com/ - đó là một công cụ tuyệt vời cho xem lưu lượng truy cập nào được gửi giữa máy chủ và trình duyệt, bao gồm cookie, v.v ... và có thể được định cấu hình để giải mã lưu lượng HTTPS? –
Vâng, tôi đã làm điều đó; Fiddler là nguồn thông tin chính của tôi cho những gì tôi biết tại thời điểm này. Cảm ơn, mặc dù. – Joel