2011-01-14 37 views
47

Có bất kỳ vấn đề nào với việc gửi lại cookie trong khi chuyển hướng 302 không? Ví dụ: nếu tôi tạo cookie trả về url và chuyển hướng người dùng trong cùng một phản hồi thì bất kỳ trình duyệt (hiện đại) nào đều bỏ qua cookie?Gửi cookie của trình duyệt trong khi chuyển hướng 302

+0

Đọc một chút, tôi nghĩ rằng các biến phiên sẽ tốt hơn cookie vì chúng là phía máy chủ và không phụ thuộc vào khả năng dự đoán của khách hàng. – ADTC

Trả lời

20

Hầu hết trình duyệt đều chấp nhận cookie trên 302 chuyển hướng. Tôi khá chắc chắn về điều đó, nhưng tôi đã tìm kiếm một chút. Không phải tất cả hiện đại là trình duyệt. Internet archive Link from a now removed/dead/ microsoft connect Q/A on Silverlight Client HTTP Stack ignores Set-Cookie on 302 Redirect Responses (2010)

Tôi nghĩ rằng bây giờ chúng ta có một sự thay thế cho IE6 và đó là trình duyệt Windows Mobile ...

+1

Trang diễn đàn bạn chỉ định không thể truy cập được bằng URL. Bạn có nghĩa là trình duyệt IE6 và Windows Mobile không? Liên kết – hiroshi

+1

đã di chuyển. Tôi đã thiết lập một liên kết mới với nội dung tương tự. và tôi có nghĩa là phiên bản IE dành riêng cho thiết bị di động thêm bộ lỗi của riêng mình – regilero

31

Theo bài viết trên blog này: http://blog.dubbelboer.com/2012/11/25/302-cookie.html tất cả các trình duyệt chính, IE (6, 7, 8, 9, 10) , FF (17), Safari (6.0.2), Opera (12.11) trên cả windows và Mac, đặt cookie trên chuyển hướng. Điều này đúng cho cả chuyển hướng 301 và 302.

10

Here là lỗi Chromium cho vấn đề này (Set-cookie bị bỏ qua cho phản hồi HTTP có trạng thái 302).

+0

Trạng thái: WontFix - lỗi vĩnh viễn – Slawa

11

Một thông báo (để cứu lấy mạng sống của nhà phát triển):

IE và Edge đang phớt lờ Set-Cookie trong phản ứng chuyển hướng khi tên miền của cookie là localhost.

Giải pháp:

Sử dụng 127.0.0.1 thay vì localhost.

+4

IE và Edge có thể đã "cố định" điều này để họ cũng không đặt cookie cho 127.0.0.1. Doh! Và họ tự hỏi tại sao các nhà phát triển không yêu thích IE ... Câu trả lời của bạn vẫn kết thúc khoảng 4 tiếng trầy xước đầu tôi. Cảm ơn! – GlenPeterson

0

Trong trường hợp của tôi, tôi đặt CookieOptions.Secure = true, nhưng đã thử nghiệm trên http://localhost. Và trình duyệt ẩn cookie theo cài đặt.

Để tránh sự cố như vậy, bạn có thể đặt tùy chọn Bảo mật cookie để khớp với giao thức Request.IsHttps, ví dụ:

new CookieOptions() 
       { 
        Path = "/", 
        HttpOnly = true, 
        Secure = Request.IsHttps, 
        Expires = expires 
       } 
Các vấn đề liên quan