2009-04-22 12 views
95

Nói chung, khi được cung cấp cookie không có thời hạn, trình duyệt hiện đại sẽ xem cookie này là 'cookie phiên', họ sẽ xóa cookie vào cuối phiên duyệt web (thường là khi trình duyệt ví dụ đóng).Cookie phiên Firefox

IE, Opera, Safari và Chrome đều hỗ trợ hành vi này.

Tuy nhiên firefox (3.0.9 phát hành thích hợp mới nhất) dường như không tuân thủ quy tắc này, từ những gì tôi có thể nói nó không hết hạn cookie khi trình duyệt đóng hoặc khi người dùng đăng xuất hoặc khởi động lại hệ điều hành.

Vì vậy, tại sao firefox đề cập đến chúng dưới dạng cookie phiên, khi chúng cuối cùng không thời hạn?

Có ai biết Firefox xử lý hết hạn cookie phiên không?

+1

Tôi không nghĩ rằng điều này thực sự đã được trả lời. Tôi cũng thấy điều này. – bhollis

+0

Cảm ơn BRH đã nghiên cứu, tôi thực sự đã thấy câu trả lời của bạn và có ý nghĩa để kiểm tra nghiên cứu của bạn trước khi đánh dấu câu trả lời của bạn thay vào đó, hoàn toàn quên! xin lỗi – meandmycode

Trả lời

105

Điều này rõ ràng là do thiết kế. Hãy xem lỗi Bugzilla này: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox có tính năng lưu tất cả các tab của bạn, sau đó bạn khôi phục trình duyệt và các tab đó trở lại. Đó được gọi là khôi phục phiên. Những gì tôi đã không nhận ra là nó cũng sẽ khôi phục tất cả các cookie phiên cho những trang đó! Nó đối xử với nó như bạn chưa bao giờ đóng trình duyệt. Điều này có ý nghĩa trong trường hợp nếu trình duyệt của bạn bị rơi, bạn quay trở lại vị trí hiện tại của bạn, nhưng có một chút bối rối đối với các nhà phát triển web được sử dụng để xóa cookie phiên. Tôi đã có một số cookie phiên cũ từ những tháng trước đã được đặt bởi các trang web mà tôi luôn mở trong các tab.

Để kiểm tra điều này, hãy đóng tất cả các tab trong trình duyệt của bạn, sau đó đóng trình duyệt và khởi động lại. Tôi nghĩ rằng cookie phiên cho trang web của bạn phải rõ ràng trong trường hợp đó. Nếu không, bạn phải tắt khôi phục phiên.

+0

Tôi thấy hành vi này khá đáng ngờ, cảm ơn bạn đã nghiên cứu.Nếu "Lưu và Thoát" được chọn hoặc "Khôi phục tab và cửa sổ", khi đóng trình duyệt, tất cả các cookie phiên vẫn giữ nguyên. Cách duy nhất để "người dùng" loại bỏ chúng là trước hết đóng (các) tab và * rồi * đóng trình duyệt. – mark

+0

Bạn đã bao giờ tìm cách giải quyết chưa? Tôi thực sự không muốn Firefox đào các phiên cũ vì tôi cần ID phiên trong ứng dụng của mình là duy nhất. – ArjanP

+0

Xin lỗi, tôi không biết cách giải quyết. Từ quan điểm của ứng dụng, trình duyệt của họ không bao giờ đóng. – bhollis

3

Điều này sẽ hiệu quả. Tôi từng là một trong những người thử nghiệm mô-đun cookie và tôi không nghĩ rằng có bất kỳ lý do thiết kế nào sẽ hoạt động khác (mặc dù nếu bạn gặp sự cố, cookie phiên có thể được thiết kế để bật khi bạn khởi động lại ...)

Bạn có đang xem cookie trong menu "Tùy chọn"> tab "Bảo mật"> "Hiển thị cookie ..." không?

Ngoài ra, bạn đã thử một hồ sơ mới chưa?

+0

Rất lạ, tôi khá hài lòng nếu đây chỉ là lỗi với hai hệ thống tôi đã thử nghiệm .. Tôi đã xem cookie và chúng tồn tại mọi thứ .. và chúng hoàn toàn được phân loại là cookie phiên của firefox. Các tùy chọn duy nhất mà tôi từng thay đổi trong firefox là tắt javascript và bật .. các plugin đã cài đặt của tôi là firebug và thanh công cụ dành cho nhà phát triển web .. dù sao thì cũng tốt. – meandmycode

+0

Ngoài ra còn có nhiều tùy chọn mô đun cookie khác nhau, nhưng tôi không nhớ bất kỳ tùy chọn nào trong số đó có chức năng này. FF3 đã chuyển từ một tệp văn bản sang cơ sở dữ liệu cookie, có thể cơ sở dữ liệu của bạn đã hoạt động sai. – benc

5

Hai ý tưởng:

  1. Bạn có một vấn đề với người quản lý phiên của bạn (một trong những bao gồm trong FF3 hoặc một trong một phần mở rộng, giống như tabmixplus)
  2. Sử dụng Firebug + Firecookie (https://addons.mozilla.org/en-US/firefox/addon/6683) để gỡ lỗi!
1

Đây là một chút lo ngại trong môi trường người dùng được chia sẻ. Nếu tôi đặt cookie xác thực được đặt hết hạn vào cuối phiên. Điều này sẽ vẫn tồn tại trong Firefox sau khi trình duyệt đã bị đóng và một người dùng khác khởi động Firefox. Cookie được đặt với ngày hết hạn vì một lý do!

+1

Vâng, công bằng về "Cookie được đặt với ngày hết hạn vì lý do" - trong trường hợp này, bạn không đặt ngày hết hạn, do đó, trình duyệt sẽ quyết định thời gian cookie đó kéo dài. – meandmycode

-1

Vâng, điều đó gây khó chịu cho tôi. Hệ thống của tôi được thiết lập để người dùng có thể nhấn EXIT theo đó tôi hủy tất cả các cookie phiên. Nhưng nếu người dùng đóng trình duyệt mà không thực sự chọn Thoát, tôi muốn xóa cookie phiên.

Tôi đã thử nghiệm nó với Google Chrome, IE 9 và hoạt động tốt. Tuy nhiên, Firefox miễn cưỡng giết các phiên "cookies" này (theo báo cáo của Firebug).

OK. Đây là những gì tôi đã làm. Tôi đã chọn Thoát từ menu chính của FireFox và từ đó trở đi, đã làm tốt như mong đợi (Không biết tại sao).

0

Tôi bị lúng túng rằng Mozilla đã bỏ qua điều này vì trong nhiều năm.

OK .. vì vậy tôi thoát FF và tắt PC. Ngày tiếp theo FF bắt đầu và mở tập hợp các trang cuối cùng (tính năng tiện dụng đẹp) NHƯNG khôi phục các phiên và tôi đăng nhập lại vào các trang không có tính năng "lưu cài đặt của tôi". Tôi biết vì chúng là các trang web tôi đã xây dựng. Bất kể tôi làm gì với cài đặt php ini, các phiên sẽ được khôi phục.

Chúng tuyệt đối không được khôi phục. Các trang có, nhưng các phiên có cookie được đặt thành '0' không.

Tôi không hiểu tại sao điều này không được gắn cờ là lỗ hổng bảo mật. Chắc chắn tôi có thể thực hiện một số kiểm tra bổ sung ở phía máy chủ, để xem đăng nhập có được cho phép hay không, dựa trên thời gian từ lần đăng nhập cuối cùng, nhưng không cần thiết.

Phiên không nên tồn tại. FF đang thao tác cài đặt hết hạn cookie.

-1

Tôi không đồng ý với meandmycode ở trên.

Các HTTP đặc tả https://www.ietf.org/rfc/rfc6265.txt cuộc đàm phán về những gì một khách hàng nên làm gì với tiêu đề Set-Cookie với Expires:

Nếu máy chủ muốn user agent để tồn tại cookie trên nhiều "phiên" (ví dụ, tác nhân người dùng khởi động lại), máy chủ có thể chỉ định ngày hết hạn trong thuộc tính Expires. Lưu ý rằng tác nhân người dùng có thể xóa cookie trước ngày hết hạn nếu lưu trữ cookie của đại lý người dùng vượt quá hạn ngạch hoặc nếu người dùng xóa cookie của máy chủ theo cách thủ công.

Phần mở rộng hợp lý của điều này là cách ONLY máy chủ phải yêu cầu trình duyệt không duy trì Cookie khi thoát là không đặt giá trị Hết hạn (tức là cookie phiên). Nếu một trình duyệt không tôn trọng ngữ nghĩa đó thì nó không tôn trọng phản hồi của máy chủ.

Về cơ bản, tác nhân người dùng quyết định bỏ qua yêu cầu máy chủ và hoạt động như thể đã đặt giá trị hết hạn.