ฉันต้องการเก็บคุกกี้ทั้งหมดไว้ในเบราว์เซอร์ของฉันโดยใช้ JavaScript ทำได้ยังไง?
ฉันต้องการเก็บคุกกี้ทั้งหมดไว้ในเบราว์เซอร์ของฉันโดยใช้ JavaScript ทำได้ยังไง?
คำตอบ:
คุณสามารถเข้าถึงคุกกี้สำหรับไซต์ใดไซต์หนึ่งเท่านั้น เมื่อใช้document.cookie
คุณจะได้รับรายการของคู่คีย์ = ค่าที่ใช้ Escape ซึ่งคั่นด้วยอัฒภาค
secret=do%20not%20tell%you;last_visit=1225445171794
เพื่อให้การเข้าถึงง่ายขึ้นคุณต้องแยกวิเคราะห์สตริงและยกเลิกการสเคปรายการทั้งหมด:
var getCookies = function(){
var pairs = document.cookie.split(";");
var cookies = {};
for (var i=0; i<pairs.length; i++){
var pair = pairs[i].split("=");
cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
}
return cookies;
}
ดังนั้นคุณอาจเขียนในภายหลัง:
var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"
HttpOnly
คุกกี้document.cookie
คุณสมบัติซึ่งมีรายการคู่ที่คั่นด้วยอัฒภาคname=value
คุณไม่สามารถ. โดยการออกแบบเพื่อความปลอดภัยคุณสามารถเข้าถึงได้เฉพาะคุกกี้ที่ไซต์ของคุณกำหนด StackOverflow ไม่สามารถมองเห็นคุกกี้ที่กำหนดโดย UserVoice หรือคุกกี้ที่กำหนดโดย Amazon
ในการดึงข้อมูลคุกกี้ทั้งหมดสำหรับเอกสารปัจจุบันที่เปิดในเบราว์เซอร์ให้คุณใช้document.cookie
คุณสมบัติอีกครั้ง
แนวทางที่ทันสมัย
let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});
console.log(c);
;)
เนื่องจากชื่อไม่ได้ระบุว่าต้องเป็นแบบโปรแกรมฉันจะถือว่าเป็นปัญหาการดีบัก / การจัดการความเป็นส่วนตัวของแท้และการแก้ปัญหาขึ้นอยู่กับเบราว์เซอร์และต้องใช้เบราว์เซอร์ที่มีการโทรจัดการคุกกี้โดยละเอียดและ / หรือโมดูลการดีบักหรือ ปลั๊กอิน / ส่วนขยาย ฉันจะแสดงรายการหนึ่งและขอให้คนอื่นเขียนลงในเบราว์เซอร์ที่พวกเขารู้จักโดยละเอียดและโปรดระบุเวอร์ชันให้แม่นยำด้วย
โครเมียมเหล็ก (SRWare Iron 4.0.280)
เมนูประแจ (เครื่องมือ): ตัวเลือก / ภายใต้ฮูด / [แสดงคุกกี้และการอนุญาตเว็บไซต์] สำหรับโดเมน / ไซต์ที่เกี่ยวข้องให้พิมพ์คำต่อท้ายในช่องค้นหา (เช่น. foo.tv) ข้อแม้: เมื่อคุณมีโหนด (ไซต์หรือคุกกี้) ที่เน้นการคลิกให้ใช้ [ลบ] เพื่อฆ่าทรีย่อยเฉพาะ การใช้ [ลบทั้งหมด] จะยังคงลบคุกกี้สำหรับไซต์ทั้งหมดที่เลือกโดยการค้นหาและทำให้เซสชันการดีบักของคุณเสียไป
เพิ่มการตัดแต่ง () ให้กับคีย์ในออบเจ็กต์และตั้งชื่อมันว่า str ดังนั้นมันจะชัดเจนมากขึ้นว่าเรากำลังจัดการกับสตริงที่นี่
export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});
หากคุณพัฒนาส่วนขยายของเบราว์เซอร์คุณสามารถลองใช้browser.cookies.getAll ()
สิ่งที่คุณขอเป็นไปได้ แต่จะใช้ได้เฉพาะกับเบราว์เซอร์ที่เจาะจงเท่านั้น คุณต้องพัฒนาแอปส่วนขยายเบราว์เซอร์เพื่อให้บรรลุสิ่งนี้ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ chrome api เพื่อทำความเข้าใจได้ดีขึ้น https://developer.chrome.com/extensions/cookies