Chrome ไม่ได้ลบคุกกี้เซสชัน


188

ฉันกำลังพยายามตั้งค่าคุกกี้เซสชันในจาวาสคริปต์เช่นนี้:

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

แต่ Chrome จะไม่ลบแม้ว่าฉันจะออกจากเบราว์เซอร์และเปิดอีกครั้ง

ฉันตรวจสอบใน Firefox และ Opera และทั้งสองทำงานตามที่ต้องการ - พวกเขาลบคุกกี้เซสชันเมื่อออกจากเบราว์เซอร์

Chrome เพิ่งเพิกเฉยกฎการหมดอายุหรือไม่

ฉันตรวจสอบในหลายระบบปฏิบัติการและพบว่าคุกกี้เซสชันถูกลบออกจาก Chrome ใน Windows XP และ Ubuntu แต่ไม่ใช่ใน Mac OSX Lion


1
มันก็เหมือนกับในโพสต์ของฉันคือไม่มีวันหมดอายุไม่แน่ใจเกี่ยวกับ Httponly ฉันไม่ได้พยายามลบมันด้วยมือ ปัญหาคือเบราว์เซอร์ควรลบมันเมื่อออก แต่ Chrome ก็ไม่ได้ทำ
mgs

>>> และพบว่าเซสชันคุกกี้ถูกลบออกจาก Chrome ใน Windows XP ไม่ใน Windows XP Chrome จะไม่ลบคุกกี้ด้วย ฉันใช้ Windows XP ตอนนี้และพบคำถามของคุณเพราะมีปัญหาเดียวกัน ข้อแตกต่างเพียงอย่างเดียวคือฉันใช้ ZF2 และตั้งค่าตัวเลือกเซสชันผ่านแพ็คเกจแพ็คเกจ แต่มันเป็นวิธี PHP ปกติต่อไป - และini_set("session.cookie_lifetime", 0) 'remember_me_seconds' => 1แต่ไม่ช่วย Firefox ทำงานได้ดี แต่ Chrome ไม่ทำงาน
Green

คำตอบ:


222

3
และฉันพยายามที่จะจัดรูปแบบความคิดเห็นของฉันเป็นอย่างดีกับ linebreaks แต่ระบบที่โง่เอาเส้นแบ่งเหล่านั้นออกมาเช่นกัน ... มาเถอะ Stackoverflow สร้างระบบที่ดีกว่า! ฉันใช้เวลาในการทำให้ความเห็นของฉันอ่านได้จะเป็นประโยชน์ต่อผู้อ่านเป็นอย่างมากและจากนั้นคุณก็ทำลายมันเสียก่อนโดยเชื่อว่าฉันเป็นนักสแปมเมอร์และจากการลบตัวแบ่งบรรทัด!
Jesper

2
หมายเหตุ: คุณสามารถพบปัญหาเดียวกันที่แน่นอนใน Firefox หากคุณมีตัวเลือก "แสดงหน้าต่างและแท็บจากครั้งที่แล้ว" สำหรับตัวเลือก "เมื่อ Firefox เริ่มต้น" ในตัวเลือก ด้วยเหตุผลเดียวกัน โดยการออกแบบคุกกี้เซสชันจะถูกเก็บไว้เพื่อช่วยให้เวิร์กโฟลว์ในกรณีที่เบราว์เซอร์พัง
webnesto

40
ได้. ทั้ง Chrome และ FF ทั้งฟังก์ชันคุกกี้เซสชั่นหยุดพักเนื่องจากสิ่งนี้ สำหรับ chrome มีรายงานปัญหาแล้ว: code.google.com/p/chromium/issues/detail?id=128513และทำเครื่องหมาย WONTFIX เห็นได้ชัดว่า Google ไม่ได้ให้ความสนใจกับมาตรฐานเว็บและช่องโหว่ด้านความปลอดภัยใน Chrome และ FF ก็ไม่เหมือนกัน ดู FF bug (อย่างน้อยไม่ได้ปิด): bugzilla.mozilla.org/show_bug.cgi?id=443354สิ่งที่น่าเศร้าสำหรับเบราว์เซอร์ทั้งสองนี้
lucian303

4
w3.org/Protocols/rfc2109/rfc2109 : Max-Age พฤติกรรมเริ่มต้นคือการทิ้งคุกกี้เมื่อตัวแทนผู้ใช้ออก
lucian303

2
@ lucian303 ในขณะนี้ดูเหมือนว่าเป็นการละเมิดมาตรฐานฉันไม่คิดว่าคุณจะสามารถ "เรียกดูต่อจากครั้งที่แล้ว" โดยไม่ต้อง "ทำให้เซสชันคุกกี้มีชีวิต" Opera, rekonq และ IE9 (ผ่านลิงก์ "เปิดเซสชันล่าสุด" อีกครั้งในหน้าแท็บใหม่) นำไปใช้กับแบบเดิมโดยไม่ต้องใช้แบบหลัง ดังนั้นเบราว์เซอร์ดังกล่าวสามารถแสดงหน้าแคชที่ระบุว่าคุณยังเข้าสู่ระบบอย่างไม่ถูกต้องและ / หรือมีการป้องกันโทเค็นการป้องกัน CSRF
sayap

25

ฉันเพิ่งพบปัญหาเดียวกันกับคุกกี้ที่กำหนดให้หมดอายุใน "การสิ้นสุดเซสชันการสืบค้น"

น่าเสียดายที่มันไม่ได้ทำให้ฉันเล่นกับการตั้งค่าเบราว์เซอร์เล็กน้อย

ปรากฎว่าคุณสมบัติที่จดจำแท็บที่เปิดอยู่เมื่อเบราว์เซอร์ถูกปิดเป็นสาเหตุของปัญหา (คุณลักษณะนี้มีชื่อว่า "เมื่อเริ่มต้น" - "ดำเนินการต่อจากจุดที่ฉันค้างไว้" อย่างน้อยใน Chrome เวอร์ชันปัจจุบัน)

สิ่งนี้เกิดขึ้นกับ Opera และ Firefox


วิธีนี้แก้ไขปัญหาได้ทันทีสำหรับฉัน! ดีใจที่ได้ทราบว่าทำไมสิ่งต่าง ๆ เกิดขึ้นในแบบที่พวกเขาทำ :)
ตอบสนองอย่างรวดเร็ว

5
รับไม่ได้ ฉันไม่ต้องการให้ Chrome ลืมหน้าต่างที่เปิดอยู่เพราะฉันมักจะออกจาก Chrome โดยไม่ตั้งใจเมื่อเปิดแท็บจำนวนมาก (ขอบคุณ OS X ที่ให้ฉันเลื่อนหน้าต่างที่ไม่มีโฟกัสทำให้ฉันคิดว่ามันมีโฟกัส แต่เป็นเรื่องราวที่แตกต่าง) ถ้าฉันต้องกลับเข้าสู่ระบบไม่ว่าจะเป็น หากไม่ออกจากระบบเมื่อฉันออกจากจงใจทำให้เป็นการยากที่จะตรวจสอบให้แน่ใจว่าฉันไม่ได้ลงชื่อเข้าใช้ทุกที่ซึ่งอาจเป็นปัญหาด้านความปลอดภัยที่ยิ่งใหญ่
Michael

5
อย่างน้อยที่สุดตัวเลือกนี้จะไม่เปิดใช้งานตามค่าเริ่มต้น "คุณสมบัติ" นี้ถูกกล่าวถึงในความช่วยเหลือของ Google : "Chrome จะกู้คืนข้อมูลการท่องเว็บและคุกกี้เซสชันของคุณด้วย " IMO นี่ควรเป็นตัวเลือกย่อยเพิ่มเติมภายใต้ "ดำเนินการต่อจากจุดที่ฉันค้างไว้"
MrWhite

อนึ่งนี่ดูเหมือนจะไม่เป็น "ปัญหา" กับ Opera อีกต่อไป (ทดสอบ Opera 22 ถึงแม้ว่าฉันไม่ได้สังเกตว่ามันเป็นปัญหาสำหรับรุ่นหรือสองอย่างน้อย) Firefox 29 กู้คืนคุกกี้เซสชันเมื่อมีการทำเครื่องหมายที่ "แสดงหน้าต่างและแท็บของฉันจากครั้งล่าสุด" (ตามเอกสารประกอบ)
MrWhite

2
@Michael ซึ่งไม่สมเหตุสมผลนักเนื่องจากเว็บไซต์ส่วนใหญ่ที่ใช้เซสชันจะไม่อนุญาตให้คุณกลับไปที่หน้าเว็บที่คุณเข้าชมหากคุณออกจากระบบแล้ว ดังนั้นคุณต้องการให้เบราว์เซอร์ดำเนินการต่อจากจุดที่คุณค้างไว้หรือไม่?
Deji

21

ฉันเพิ่งมีปัญหานี้ ฉันสังเกตเห็นว่าแม้หลังจากปิดเบราว์เซอร์แล้วฉันยังมีกระบวนการทำงานหลายอย่างของ Chrome เปิดใช้งานสิ่งเหล่านี้มาจากส่วนขยาย Chrome ของฉัน

ภายใต้การตั้งค่าขั้นสูงฉันไม่ถูกตรวจสอบ 'Continue running background apps when Google Chrome is closed'และคุกกี้เซสชันของฉันก็เริ่มทำงานได้ตามที่ควร

ยังคงมีความเจ็บปวดอยู่ข้างหลังสำหรับนักพัฒนาของเราทุกคนที่ได้รับการเข้ารหัสคาดว่าคุกกี้เซสชันจะถูกลบเมื่อผู้ใช้ทำการเรียกดูเสร็จแล้ว


ตามปกติแล้ว "แอปพื้นหลัง" ไม่มีส่วนเกี่ยวข้องกับการคงอยู่ของคุกกี้เซสชัน (เว้นแต่คุณอาจมีส่วนขยายที่จำคุกกี้เซสชันของคุณได้!) ตัวเลือก "ดำเนินการต่อจากจุดที่ฉันค้างไว้" ในการตั้งค่าจะกู้คืนคุกกี้เซสชัน (ดังที่ได้กล่าวไว้ในคำตอบอื่น)
MrWhite

1
ใช้งานได้หลังจากฉันปิดใช้งานตัวเลือกนั้นฉันจะล้างคุกกี้เซสชันของฉัน!
Walid Ammar

นี่เป็นอีกเหตุผลที่ทำให้ไม่ต้องลบคุกกี้เซสชัน ขอบคุณ
L-Four

10

อาจเป็นเพราะ Chrome ยังคงทำงานในพื้นหลังหลังจากที่คุณปิดเบราว์เซอร์ ลองปิดการใช้งานคุณสมบัตินี้โดยทำดังต่อไปนี้:

  1. เปิด chrome: // settings /
  2. คลิก "แสดงการตั้งค่าขั้นสูง ... "
  3. ไปที่ส่วนของระบบและปิดใช้งาน "เรียกใช้แอปพื้นหลังต่อไปเมื่อ Google Chrome ปิด" การดำเนินการนี้จะบังคับให้ Chrome ปิดอย่างสมบูรณ์จากนั้นจะลบคุกกี้เซสชัน

อย่างไรก็ตามฉันคิดว่า Chrome ควรตรวจสอบและลบคุกกี้เซสชันก่อนหน้าที่เริ่มต้นแทนการปิด


10

ฉันต้องทำเครื่องหมายทั้งคู่ภายใต้การตั้งค่าขั้นสูงของ Chrome:

  • 'เรียกใช้แอปพื้นหลังต่อไปเมื่อปิด Google Chrome'
  • "ดำเนินการต่อจากจุดที่ฉันค้างไว้", "เมื่อเริ่มต้น"

สิ่งนี้ควรได้รับการโหวตให้สูงขึ้นหรือคำตอบยอดนิยมควรได้รับการแก้ไขเพื่อรวมจุด "แอปที่ทำงานอยู่เบื้องหลัง" สิ่งนี้ส่งผลกระทบต่อฉัน การปิด "ดำเนินการต่อจากจุดที่ฉันค้างไว้" ไม่ได้แก้ไข ฉันต้องปิด "ดำเนินการแอปพื้นหลังต่อไปเมื่อปิด Google Chrome" จากนั้นคุกกี้เซสชันของฉันถูกลบอย่างถูกต้องเมื่อฉันปิด Chrome
Matt Welke

ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุด
L-Four

3

ทางเลือกง่าย ๆ คือการใช้วัตถุsessionStorageใหม่ ตามความคิดเห็นหากคุณได้ทำเครื่องหมาย 'ดำเนินการต่อต่อจากจุดที่ฉันค้างไว้' sessionStorage จะคงอยู่ระหว่างการรีสตาร์ท


9
ไม่มันยังคงอยู่ระหว่างการรีสตาร์ทหากคุณได้เลือก "ดำเนินการต่อจากจุดที่ฉันค้างไว้"
Olli

TimDog: "sessionStorage จะคงอยู่ระหว่างการรีสตาร์ท", @Olli "ไม่มันจะคงอยู่ระหว่างการรีสตาร์ท" พวกคุณเห็นด้วยหรือโต้แย้งไหม ฉันไม่เข้าใจ :) อ๊ะเดี๋ยวก่อนฉันเข้าใจแล้ว ...
naXa

2

ฉันมีปัญหาเดียวกันกับ "document.cookie" ใน Windows 8.1 วิธีเดียวที่ Chrome จะลบคุกกี้กำลังปิดคุกกี้จากตัวจัดการงาน (ไม่ใช่วิธีแฟนซี) ดังนั้นฉันจึงตัดสินใจจัดการคุกกี้จากแบ็กเอนด์หรือใช้บางอย่าง เช่น "js-cookie"


1

คุณได้ลองลบส่วนขยายแฮงเอาท์ใน Google Chrome แล้วหรือยัง เพราะมันบังคับให้โครเมี่ยมทำงานต่อไปแม้คุณปิดหน้าต่างทั้งหมด

ฉันกำลังเผชิญกับปัญหา แต่ก็แก้ไขได้ในขณะนี้



-2

หากคุณตั้งค่าโดเมนสำหรับคุกกี้เซสชัน php ดูเหมือนว่าเบราว์เซอร์จะคงไว้เป็นเวลา 30 วินาทีหรือมากกว่านั้น ดูเหมือนจะไม่สำคัญหากคุณปิดแท็บหรือหน้าต่างเบราว์เซอร์

ดังนั้นหากคุณกำลังจัดการเซสชันโดยใช้สิ่งต่อไปนี้อาจทำให้คุกกี้ค้างในเบราว์เซอร์ได้นานกว่าที่คาดไว้

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

วิธีเดียวที่ฉันได้พบเพื่อกำจัดคุกกี้ที่ลอยอยู่นั้นคือการลบบรรทัดของรหัสที่ตั้งค่าโดเมนของเซสชันคุกกี้ ระวังฟังก์ชั่น session_set_cookie_params () ด้วย คำนำหน้าจุดโดเมนดูเหมือนว่าจะไม่ได้มีผลกระทบต่อปัญหาอย่างใดอย่างหนึ่ง

นี่อาจเป็นข้อผิดพลาดของ php เนื่องจาก php ส่งคุกกี้เซสชัน (เช่นPHPSESSID=b855ed53d007a42a1d0d798d958e42c9) ในส่วนหัวหลังจากเซสชันถูกทำลาย หรืออาจเป็นปัญหาการเผยแพร่เซิร์ฟเวอร์ แต่ฉันไม่คิดเช่นนั้นเนื่องจากการทดสอบของฉันอยู่บนเซิร์ฟเวอร์ส่วนตัว


-2

ฉันเพิ่งพบปัญหานี้กับ Chrome ที่จัดเก็บ Session ID แต่ฉันไม่ชอบแนวคิดในการปิดใช้งานตัวเลือกเพื่อดำเนินการต่อจากจุดที่ฉันค้างไว้ ฉันดูคุกกี้สำหรับเว็บไซต์และพบคุกกี้ Session ID สำหรับหน้าเข้าสู่ระบบ การลบที่ไม่ได้แก้ไขปัญหาของฉัน ฉันค้นหาโดเมนและพบว่ามีคุกกี้เซสชัน ID อื่นในโดเมน การลบคุกกี้ ID เซสชันทั้งสองแก้ไขปัญหาด้วยตนเองและฉันไม่ได้ปิดและเปิดเบราว์เซอร์ใหม่ซึ่งสามารถเรียกคืนคุกกี้ได้



-8

Google chrome มีปัญหาหากคุณตั้งค่าและยกเลิกการตั้งค่าคุกกี้อย่างไม่เหมาะสม นี่คือรหัส php ความคิดนี้จะทำให้คุณมีความคิด

ตั้งค่าคุกกี้

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

วิธีที่ไม่ถูกต้องและจะใช้งานไม่ได้ (ให้สังเกตว่า PATH หายไป)

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

วิธีแก้ไขปัญหาที่ถูกต้องใน google chrome

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

1
คำถามไม่ได้เกี่ยวกับคุกกี้ที่ไม่เหมาะสม
John K
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.