Chrome không xóa cookie phiên


188

Tôi đang cố gắng đặt cookie phiên trong javascript như thế này:

document.cookie = 'name=alex; path=/'

Nhưng Chrome không xóa nó ngay cả khi tôi thoát khỏi trình duyệt và khởi chạy lại.

Tôi đã kiểm tra Firefox và Opera và cả hai đều hoạt động như dự định - họ xóa cookie phiên khi thoát khỏi trình duyệt.

Có phải Chrome chỉ bỏ qua các quy tắc hết hạn?

Tôi đã kiểm tra nhiều hệ điều hành và phát hiện ra rằng cookie phiên bị xóa trên Chrome trong Windows XP và Ubuntu, nhưng KHÔNG trong Mac OSX Lion.


1
Nó chính xác như trong bài viết của tôi tức là không hết hạn, không chắc chắn về Httponly. Tôi không cố xóa nó bằng tay. Vấn đề là các trình duyệt nên xóa nó khi thoát nhưng Chrome không làm điều đó.
mg

>>> và phát hiện ra rằng cookie phiên được xóa trên Chrome trong Windows XP. Không. Trong Windows XP Chrome cũng không xóa cookie. Bây giờ tôi sử dụng Windows XP và đã tìm thấy câu hỏi của bạn vì gặp vấn đề tương tự. Sự khác biệt duy nhất là tôi sử dụng ZF2 và đặt tùy chọn phiên thông qua gói Phiên. Nhưng dù sao nó cũng là cách php thông thường - ini_set("session.cookie_lifetime", 0)'remember_me_seconds' => 1. Nhưng không giúp được gì. Firefox hoạt động tốt, nhưng Chrome thì không.
Xanh

Câu trả lời:


222

3
Và tôi đã cố gắng định dạng bình luận của mình một cách độc đáo bằng các ngắt dòng, nhưng hệ thống ngu ngốc cũng loại bỏ các ngắt dòng đó ... Thôi nào, Stackoverflow, tạo ra một hệ thống tốt hơn! Tôi đang dành thời gian để làm cho các bình luận của tôi có thể đọc được, để trở nên hữu ích hơn cho độc giả, và sau đó bạn làm hỏng nó trước bằng cách dại dột tin rằng tôi là một người gửi thư rác và sau đó bằng cách xóa các ngắt dòng!
Jesper

2
Lưu ý: bạn có thể gặp phải vấn đề chính xác tương tự trong Firefox nếu bạn có lựa chọn "Hiển thị các cửa sổ và tab của tôi từ lần trước" cho tùy chọn "Khi Firefox khởi động" trong các tùy chọn. Cho cùng một lý do. Theo thiết kế, cookie phiên đang được giữ lại để giúp duy trì quy trình làm việc trong trường hợp xảy ra sự cố trình duyệt.
webnesto

40
Vâng Chrome và FF đều phá vỡ chức năng cookie phiên vì điều này. Đối với chrome, vấn đề đã được báo cáo: code.google.com/p/chromium/issues/detail?id=128513 và được đánh dấu WONTFIX. Vì vậy, rõ ràng, Google không cung cấp cho af *** về việc tuân theo các tiêu chuẩn web và lỗ hổng bảo mật trong Chrome và FF cũng không. Xem lỗi FF (ít nhất là không đóng): bugzilla.mozilla.org/show_orms.cgi?id=443354 Thật là một trạng thái đáng buồn cho hai trình duyệt này.
lucian303

4
w3.org/Prot Protocol / rfc2109 / rfc2109 : Tuổi tối đa Hành vi mặc định là loại bỏ cookie khi tác nhân người dùng thoát.
lucian303

2
@ lucian303, trong khi điều này có vẻ như vi phạm các tiêu chuẩn, tôi không nghĩ bạn có thể "tiếp tục duyệt từ lần trước" mà không "giữ cookie phiên". Opera, rekonq và IE9 (thông qua liên kết "Mở lại phiên cuối cùng" trong trang Tab mới), ví dụ, triển khai cái trước mà không có cái sau. Do đó, các trình duyệt như vậy có thể hiển thị cho bạn các trang được lưu trong bộ nhớ cache cho biết bạn vẫn đang đăng nhập và / hoặc đã mã thông báo bảo vệ CSRF.
sayap

25

Tôi cũng gặp vấn đề tương tự với một cookie đã được thiết lập hết hạn vào "Kết thúc phiên duyệt web".

Thật không may, vì vậy tôi đã không chơi một chút với các cài đặt của trình duyệt.

Hóa ra tính năng ghi nhớ các tab đã mở khi đóng trình duyệt là gốc rễ của vấn đề. (Tính năng này được đặt tên là "Khi khởi động" - "Tiếp tục nơi tôi rời đi". Ít nhất là trên phiên bản Chrome hiện tại).

Điều này cũng xảy ra với Opera và Firefox.


Điều này giải quyết vấn đề ngay lập tức cho tôi! Rất vui được biết lý do tại sao mọi việc xảy ra theo cách họ làm :)
phản xạ nhanh vào

5
Không thể chấp nhận được. Tôi không muốn Chrome quên những gì cửa sổ đã mở, vì tôi thường vô tình thoát Chrome với rất nhiều tab đang mở. (Cảm ơn OS X vì đã cho tôi cuộn một cửa sổ không có tiêu điểm, khiến tôi nghĩ rằng nó KHÔNG tập trung. Nhưng, câu chuyện khác). Nếu tôi phải đăng nhập lại, vì vậy hãy là nó. Để không đăng xuất tôi khi tôi cố tình thoát ra gây khó khăn để đảm bảo rằng tôi không đăng nhập ở bất cứ đâu, đây có thể là một vấn đề bảo mật LỚN.
Michael

5
Ít nhất tùy chọn này không được bật theo mặc định. "Tính năng" này cũng được đề cập trong Trợ giúp của Google : "Chrome cũng sẽ khôi phục dữ liệu duyệt web và cookie phiên. " IMO đây phải là một tùy chọn phụ bổ sung trong "Tiếp tục nơi tôi rời đi".
MrWhite

Ngẫu nhiên, điều này dường như không còn là "vấn đề" với Opera nữa (thử nghiệm Opera 22, mặc dù tôi không nhận thấy đây là vấn đề của ít nhất một hoặc hai phiên bản). Firefox 29 khôi phục cookie phiên khi kiểm tra "Hiển thị các cửa sổ và tab của tôi từ lần trước" tương ứng (theo tài liệu).
MrWhite

2
@Michael Điều này không có ý nghĩa gì vì hầu hết các trang web sử dụng phiên sẽ không cho phép bạn quay lại trang bạn đã truy cập nếu bạn đã đăng xuất. Vậy bạn có muốn trình duyệt tiếp tục nơi bạn rời đi hay không?
Deji

21

Tôi chỉ có vấn đề này. Tôi nhận thấy rằng ngay cả sau khi tôi đóng trình duyệt, tôi vẫn có nhiều quy trình Chrome đang chạy. Hóa ra đây là những cái từ tiện ích mở rộng Chrome của tôi.

Trong cài đặt nâng cao, tôi bỏ chọn 'Continue running background apps when Google Chrome is closed' và cookie phiên của tôi bắt đầu hoạt động như bình thường.

Vẫn còn một nỗi đau cho tất cả các nhà phát triển của chúng tôi, những người đã mã hóa, hy vọng rằng cookie phiên sẽ bị xóa khi người dùng duyệt xong.


Thông thường, "ứng dụng nền" không liên quan gì đến tính bền bỉ của cookie phiên (trừ khi có thể bạn có tiện ích mở rộng ghi nhớ cookie phiên?!). Tùy chọn "Tiếp tục nơi tôi rời đi" trong cài đặt cũng khôi phục cookie phiên (như được đề cập trong câu trả lời khác).
MrWhite

1
Nó hoạt động, sau khi tôi tắt tùy chọn đó, tôi sẽ xóa cookie phiên!
Walid Ammar

Đây thực sự là một lý do khác khiến cookie phiên không bị xóa. Cảm ơn.
L-Four

10

Điều này có thể do Chrome vẫn chạy trong nền sau khi bạn đóng trình duyệt. Cố gắng tắt tính năng này bằng cách làm như sau:

  1. Mở chrome: // cài đặt /
  2. Nhấp vào "Hiển thị cài đặt nâng cao ..."
  3. Điều hướng xuống phần Hệ thống và tắt "Tiếp tục chạy các ứng dụng nền khi Google Chrome bị đóng". Điều này sẽ buộc Chrome đóng hoàn toàn và sau đó nó sẽ xóa cookie phiên.

Tuy nhiên, tôi nghĩ Chrome nên kiểm tra và xóa cookie phiên trước đó khi nó bắt đầu thay vì đóng.


10

Tôi đã phải cả hai, không được kiểm tra, trong cài đặt nâng cao của Chrome:

  • 'Tiếp tục chạy các ứng dụng nền khi Google Chrome bị đóng'
  • "Tiếp tục nơi tôi rời đi", "Khi khởi động"

Điều này nên được bình chọn cao hơn hoặc câu trả lời hàng đầu nên được chỉnh sửa để bao gồm điểm "ứng dụng chạy nền". Điều này ảnh hưởng đến tôi. Tắt "Tiếp tục nơi tôi rời đi" không khắc phục được. Tôi cũng phải tắt "Tiếp tục chạy các ứng dụng nền khi Google Chrome bị đóng". Sau đó, cookie phiên của tôi đã bị xóa đúng cách khi tôi đóng Chrome.
Matt Welke

Tôi nghĩ rằng đây thực sự là câu trả lời tốt nhất.
L-Four

3

Một cách khác đơn giản là sử dụng đối tượng sessionStorage mới . Theo các nhận xét, nếu bạn đã chọn 'tiếp tục nơi tôi rời đi', sessionStorage sẽ tiếp tục giữa các lần khởi động lại.


9
Không, nó vẫn tồn tại giữa các lần khởi động lại, nếu bạn đã chọn "Tiếp tục nơi tôi rời đi".
Olli

TimDog: "sessionStorage sẽ tồn tại giữa các lần khởi động lại.", @Olli "Không, nó vẫn tồn tại giữa các lần khởi động lại". Các bạn, bạn đồng ý hay tranh luận? Tôi không hiểu :) À, đợi đã, tôi hiểu rồi ...
naXa

2

Tôi gặp vấn đề tương tự với "document.cookie" trong Windows 8.1, cách duy nhất mà Chrome xóa cookie là tắt trình quản lý tác vụ (không phải là một cách thực sự lạ mắt), vì vậy tôi đã quyết định quản lý cookie từ phụ trợ hoặc sử dụng một cái gì đó như "js-cookie".


1

Bạn đã thử xóa tiện ích mở rộng hangouts trong Google Chrome chưa? bởi vì nó buộc chrome tiếp tục chạy ngay cả khi bạn đóng tất cả các cửa sổ.

Tôi cũng đã phải đối mặt với vấn đề nhưng nó đã được giải quyết.


1

Đi đến chrome://settings/content/cookies?search=cookies

Kích hoạt Clear cookies and site data when you quit Chrome .

Đã làm cho tôi


-2

Nếu bạn đặt tên miền cho cookie phiên php, các trình duyệt dường như giữ nó trong 30 giây hoặc lâu hơn. Nó dường như không quan trọng nếu bạn đóng tab hoặc cửa sổ trình duyệt.

Vì vậy, nếu bạn đang quản lý các phiên sử dụng một cái gì đó như sau, điều đó có thể khiến cookie bị treo trong trình duyệt lâu hơn dự kiến.

ini_set("session.cookie_domain", 'www.domain.com');

Cách duy nhất tôi tìm thấy để thoát khỏi cookie treo là xóa dòng mã đặt tên miền của cookie phiên. Đồng thời coi chừng hàm session_set_cookie_params (). Tiền tố chấm tên miền dường như cũng không có liên quan đến vấn đề.

Đây có thể là một lỗi php vì php gửi cookie phiên (tức là PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) trong tiêu đề sau khi phiên bị hủy. Hoặc nó có thể là một vấn đề lan truyền máy chủ nhưng tôi không nghĩ vậy vì thử nghiệm của tôi là trên một máy chủ riêng.


-2

Tôi vừa gặp sự cố về việc Chrome lưu trữ ID phiên nhưng tôi không thích ý tưởng vô hiệu hóa tùy chọn này để tiếp tục nơi tôi rời đi. Tôi đã xem các cookie cho trang web và tìm thấy cookie ID phiên cho trang đăng nhập. Xóa mà không sửa vấn đề của tôi. Tôi tìm kiếm tên miền và thấy có một cookie ID phiên khác trên tên miền. Xóa cả hai cookie ID phiên đã khắc phục sự cố theo cách thủ công và tôi đã không đóng và mở lại trình duyệt có thể đã khôi phục cookie.



-8

Google chrome có vấn đề nếu bạn đặt và hủy đặt cookie không đúng cách. Đây là mã php. Nghĩ rằng điều này sẽ cho bạn ý tưởng.

Đặt cookie

setcookie('userLoggedIn', 1, 0, PATH);

Cách sai và sẽ không hoạt động (thông báo PATH bị thiếu)

setcookie('userLoggedIn', 0, time()-3600);

Cách khắc phục chính xác vấn đề trên google chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);

1
Câu hỏi không phải là về một cookie không phù hợp.
John K
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.