আপনি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে বর্তমান ডোমেনের সমস্ত কুকিজ মুছবেন?
আপনি কীভাবে জাভাস্ক্রিপ্ট ব্যবহার করে বর্তমান ডোমেনের সমস্ত কুকিজ মুছবেন?
উত্তর:
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
মনে রাখবেন যে এই কোডটির দুটি সীমাবদ্ধতা রয়েছে:
HttpOnly
পতাকা সেট সহ কুকিজ মুছে ফেলবে না , কারণ HttpOnly
পতাকাটি জাভাস্ক্রিপ্টের কুকিতে অ্যাক্সেসকে অক্ষম করে।Path
মান সহ সেট করা কুকিজ মুছবে না । (এটি সেই কুকিগুলির মধ্যে উপস্থিত হবে তা সত্ত্বেও document.cookie
, তবে এটির Path
সাথে এটি নির্ধারণ করা একই মান উল্লেখ না করে আপনি এটি মুছতে পারবেন না ))trim()
আমাদের অতিরিক্ত স্থান বা split('; ')
(';' দ্বারা ') করতে হবে। আমি একটি সম্পাদনা প্রস্তাব করেছি।
আপনি যদি এটিকে দ্রুত পেস্ট করতে চান তবে ...
document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
এবং একটি বুকমার্কলেট জন্য কোড:
javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();
localStorage
তাই window.localStorage.clear()
পাশাপাশি সহায়ক হতে পারে
এবং এখানে সমস্ত পাথ এবং ডোমেনের সমস্ত রূপগুলিতে (www.mydomain.com, mydomain.com ইত্যাদি) সমস্ত কুকিজ সাফ করার জন্য এখানে রয়েছে:
(function () {
var cookies = document.cookie.split("; ");
for (var c = 0; c < cookies.length; c++) {
var d = window.location.hostname.split(".");
while (d.length > 0) {
var cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
var p = location.pathname.split('/');
document.cookie = cookieBase + '/';
while (p.length > 0) {
document.cookie = cookieBase + p.join('/');
p.pop();
};
d.shift();
}
}
})();
কিছুটা হতাশার পরে আমি নিজেই এই ফাংশনটি একসাথে ঠকিয়েছি যা একটি নামকৃত কুকিকে সমস্ত পথ থেকে মুছে ফেলার চেষ্টা করবে। আপনার প্রতিটি কুকির জন্য কেবল এটি কল করুন এবং আপনি আগে ছিলেন প্রতিটি কুকি মুছে ফেলার কাছাকাছি হওয়া উচিত।
function eraseCookieFromAllPaths(name) {
// This function will attempt to remove a cookie from all paths.
var pathBits = location.pathname.split('/');
var pathCurrent = ' path=';
// do a simple pathless delete first.
document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
for (var i = 0; i < pathBits.length; i++) {
pathCurrent += ((pathCurrent.substr(-1) != '/') ? '/' : '') + pathBits[i];
document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;' + pathCurrent + ';';
}
}
সর্বদা হিসাবে বিভিন্ন ব্রাউজারের বিভিন্ন আচরণ থাকে তবে এটি আমার পক্ষে কাজ করে। উপভোগ করুন।
আপনার যদি jquery.cookie প্লাগইনে অ্যাক্সেস থাকে তবে আপনি এইভাবে সমস্ত কুকি মুছতে পারেন:
for (var it in $.cookie()) $.removeCookie(it);
আমি যতদূর জানি ডোমেনে থাকা কোনও কুকির সেট কম্বল মুছার উপায় নেই। নামটি জানা থাকলে এবং স্ক্রিপ্টটি যদি কুকির মতো একই ডোমেনে থাকে তবে আপনি একটি কুকি সাফ করতে পারেন।
আপনি মানটি খালিতে এবং মেয়াদোত্তীকরণের তারিখটি অতীতের কোথাও সেট করতে পারেন:
var mydate = new Date();
mydate.setTime(mydate.getTime() - 1);
document.cookie = "username=; expires=" + mydate.toGMTString();
জাভাস্ক্রিপ্ট ব্যবহার করে কুকি ম্যানিপুলেট করার জন্য এখানে একটি দুর্দান্ত নিবন্ধ রয়েছে ।
document.cookie="username;expires=" + new Date(0).toGMTString()
- কুকিটি 1 সেকেন্ড আগে বা 1970 সালে মেয়াদ শেষ হলে বেশি পার্থক্য নেই
সহজ। দ্রুত।
function deleteAllCookies() {
var c = document.cookie.split("; ");
for (i in c)
document.cookie =/^[^=]+/.exec(c[i])[0]+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
এখানে দ্বিতীয় উত্তর এবং ডাব্লু 3 স্কুলগুলি দ্বারা প্রভাবিত একটি উত্তর
document.cookie.split(';').forEach(function(c) {
document.cookie = c.trim().split('=')[0] + '=;' + 'expires=Thu, 01 Jan 1970 00:00:00 UTC;';
});
কাজ করছে বলে মনে হচ্ছে
সম্পাদনা করুন: বাহ প্রায় জ্যাকের আকর্ষণীয়ের মতো ঠিক কীভাবে স্ট্যাক ওভারফ্লো এগুলি একে অপরের পাশে রাখে।
সম্পাদনা: এনভিএম যা আপাতদৃষ্টিতে সাময়িক ছিল
অনুভূত আমি কুকি সাফ করার জন্য এই পদ্ধতিটি ভাগ করব। সম্ভবত এটি কোনও সময়ে কারও পক্ষে সহায়ক হতে পারে।
var cookie = document.cookie.split(';');
for (var i = 0; i < cookie.length; i++) {
var chip = cookie[i],
entry = chip.split("="),
name = entry[0];
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
আমি জানি না কেন প্রথম ভোট দেওয়া উত্তর আমার পক্ষে কার্যকর হয় না।
যেমন এই উত্তর বলেছেন:
ব্রাউজার কুকিজ মোছার জন্য 100% সমাধান নেই।
সমস্যাটি হ'ল কুকিগুলি কেবল তাদের কী "নাম" দ্বারা নয় বরং তাদের "ডোমেন" এবং "পথ" দ্বারা স্বতন্ত্রভাবে চিহ্নিত করা হয়।
কোনও কুকির "ডোমেন" এবং "পথ" না জেনে আপনি এটিকে নির্ভরযোগ্যভাবে মুছতে পারবেন না। এই তথ্যটি জাভাস্ক্রিপ্টের ডকুমেন্ট.কুকির মাধ্যমে উপলভ্য নয়। এটি HTTP কুকি শিরোলেখের মাধ্যমে পাওয়া যায় না!
সুতরাং আমার ধারণাটি হ'ল কুকিজ অপসারণের সম্পূর্ণ সেটিংস, প্রাপ্তি এবং অপসারণের সম্পূর্ণ সেট সহ একটি কুকি সংস্করণ নিয়ন্ত্রণ যুক্ত করুন:
var cookie_version_control = '---2018/5/11';
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name+cookie_version_control + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
var nameEQ = name+cookie_version_control + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function removeCookie(name) {
document.cookie = name+cookie_version_control+'=; Max-Age=-99999999;';
}
let expireTime = now.getTime();
now.setTime(expireTime);
document.cookie =document.cookie+';expires='+now.toUTCString()+';path=/';
the কুকিগুলি সরানো হবে।
আমার আরও কিছু পরিশীলিত ও ওওপি-ভিত্তিক কুকি নিয়ন্ত্রণ মডিউল রয়েছে। এটিতে deleteAll
বিদ্যমান সমস্ত কুকি সাফ করার পদ্ধতিও রয়েছে । লক্ষ্য করুন যে deleteAll
পদ্ধতির এই সংস্করণটিতে সেটিংস রয়েছে path=/
যা বর্তমান ডোমেনের মধ্যে সমস্ত কুকি মুছে ফেলার কারণ করে। আপনার যদি কেবল কোনও সুযোগ থেকে কুকিজ মুছতে হয় তবে আপনাকে এই পদ্ধতিতে আমার গতিশীল path
পরামিতি যুক্ত করার পদ্ধতিটি আপগ্রেড করতে হবে ।
প্রধান Cookie
শ্রেণি আছে:
import {Setter} from './Setter';
export class Cookie {
/**
* @param {string} key
* @return {string|undefined}
*/
static get(key) {
key = key.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1');
const regExp = new RegExp('(?:^|; )' + key + '=([^;]*)');
const matches = document.cookie.match(regExp);
return matches
? decodeURIComponent(matches[1])
: undefined;
}
/**
* @param {string} name
*/
static delete(name) {
this.set(name, '', { expires: -1 });
}
static deleteAll() {
const cookies = document.cookie.split('; ');
for (let cookie of cookies) {
const index = cookie.indexOf('=');
const name = ~index
? cookie.substr(0, index)
: cookie;
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
}
}
/**
* @param {string} name
* @param {string|boolean} value
* @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
*/
static set(name, value, opts = {}) {
Setter.set(name, value, opts);
}
}
কুকি সেটার পদ্ধতিটি ( Cookie.set
) বরং জটিল তাই আমি এটিকে অন্য শ্রেণিতে বিভক্ত করে। এটির একটি কোড রয়েছে:
export class Setter {
/**
* @param {string} name
* @param {string|boolean} value
* @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
*/
static set(name, value, opts = {}) {
value = Setter.prepareValue(value);
opts = Setter.prepareOpts(opts);
let updatedCookie = name + '=' + value;
for (let i in opts) {
if (!opts.hasOwnProperty(i)) continue;
updatedCookie += '; ' + i;
const value = opts[i];
if (value !== true)
updatedCookie += '=' + value;
}
document.cookie = updatedCookie;
}
/**
* @param {string} value
* @return {string}
* @private
*/
static prepareValue(value) {
return encodeURIComponent(value);
}
/**
* @param {{expires?:Date|string|number,path?:string,domain?:string,secure?:boolean}} opts
* @private
*/
static prepareOpts(opts = {}) {
opts = Object.assign({}, opts);
let {expires} = opts;
if (typeof expires == 'number' && expires) {
const date = new Date();
date.setTime(date.getTime() + expires * 1000);
expires = opts.expires = date;
}
if (expires && expires.toUTCString)
opts.expires = expires.toUTCString();
return opts;
}
}
জাভাস্ক্রিপ্টের সমস্ত কুকি মুছে ফেলার জন্য এখানে একটি সহজ কোড ।
function deleteAllCookies(){
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
deleteCookie(cookies[i].split("=")[0]);
}
function setCookie(name, value, expirydays) {
var d = new Date();
d.setTime(d.getTime() + (expirydays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = name + "=" + value + "; " + expires;
}
function deleteCookie(name){
setCookie(name,"",-1);
}
deleteAllCookies()
সমস্ত কুকিজ সাফ করতে ফাংশনটি চালান ।
const cookieCleaner = () => {
return document.cookie.split(";").reduce(function (acc, cookie) {
const eqPos = cookie.indexOf("=");
const cleanCookie = `${cookie.substr(0, eqPos)}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;`;
return `${acc}${cleanCookie}`;
}, "");
}
দ্রষ্টব্য: পাথগুলি পরিচালনা করে না
//Delete all cookies
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + '=;' +
'expires=Thu, 01-Jan-1970 00:00:01 GMT;' +
'path=' + '/;' +
'domain=' + window.location.host + ';' +
'secure=;';
}
}
একাধিক স্টাইলের কুকিজের ব্রাউজারগুলির একাধিক স্টাইলে তালিকাভুক্ত প্রায় পদ্ধতিটি পরীক্ষা করার পরে, আমি দেখতে পেলাম যে এখানে প্রায় কিছুই 50% ব্যবহার করে না।
দয়া করে প্রয়োজনীয় হিসাবে সঠিক করতে সহায়তা করুন, তবে আমি আমার 2 সেন্ট এখানে ফেলে দিচ্ছি। নিম্নলিখিত পদ্ধতিটি সবকিছু ভেঙে দেয় এবং মূলত উভয় সেটিংসের টুকরো ভিত্তিক কুকি মানের স্ট্রিং তৈরি করে পাশাপাশি শুরু করে পথ স্ট্রিংয়ের ধাপে ধাপে বিল্ডিং সহ/
এবং অবশ্যই অবশ্যই ।
আশা করি এটি অন্যকে সহায়তা করে এবং আমি আশা করি যে কোনও পদ্ধতি সমালোচনা এই পদ্ধতিটি নিখুঁত করার আকারে আসতে পারে। অন্যরা যেমন চেয়েছিল আমি প্রথমে একটি সাধারণ 1-লাইনার চেয়েছিলাম, তবে জেএস কুকিজ এমন জিনিসগুলির মধ্যে একটি যা এত সহজে মোকাবেলা করা হয় না।
;(function() {
if (!window['deleteAllCookies'] && document['cookie']) {
window.deleteAllCookies = function(showLog) {
var arrCookies = document.cookie.split(';'),
arrPaths = location.pathname.replace(/^\//, '').split('/'), // remove leading '/' and split any existing paths
arrTemplate = [ 'expires=Thu, 01-Jan-1970 00:00:01 GMT', 'path={path}', 'domain=' + window.location.host, 'secure=' ]; // array of cookie settings in order tested and found most useful in establishing a "delete"
for (var i in arrCookies) {
var strCookie = arrCookies[i];
if (typeof strCookie == 'string' && strCookie.indexOf('=') >= 0) {
var strName = strCookie.split('=')[0]; // the cookie name
for (var j=1;j<=arrTemplate.length;j++) {
if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist
else {
var strValue = strName + '=; ' + arrTemplate.slice(0, j).join('; ') + ';'; // made using the temp array of settings, putting it together piece by piece as loop rolls on
if (j == 1) document.cookie = strValue;
else {
for (var k=0;k<=arrPaths.length;k++) {
if (document.cookie.indexOf(strName) < 0) break; // if this is true, then the cookie no longer exist
else {
var strPath = arrPaths.slice(0, k).join('/') + '/'; // builds path line
strValue = strValue.replace('{path}', strPath);
document.cookie = strValue;
}
}
}
}
}
}
}
showLog && window['console'] && console.info && console.info("\n\tCookies Have Been Deleted!\n\tdocument.cookie = \"" + document.cookie + "\"\n");
return document.cookie;
}
}
})();
jQuery:
var cookies = $.cookie();
for(var cookie in cookies) {
$.removeCookie(cookie);
}
ভ্যানিলা জেএস
function clearListCookies()
{
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
{
var spcook = cookies[i].split("=");
deleteCookie(spcook[0]);
}
function deleteCookie(cookiename)
{
var d = new Date();
d.setDate(d.getDate() - 1);
var expires = ";expires="+d;
var name=cookiename;
//alert(name);
var value="";
document.cookie = name + "=" + value + expires + "; path=/acc/html";
}
window.location = ""; // TO REFRESH THE PAGE
}
আইই এবং এজতে আমি একটি সমস্যা পেয়েছি। ওয়েবকিট ব্রাউজারগুলি (ক্রোম, সাফারি) আরও ক্ষমাশীল বলে মনে হচ্ছে। কুকি সেট করার সময়, সর্বদা কিছুতে "পথ" সেট করুন, কারণ পূর্বনির্ধারিত পৃষ্ঠাটি কুকি সেট করে। সুতরাং আপনি যদি "পথ" নির্দিষ্ট না করেই এটি অন্য পৃষ্ঠায় সমাপ্ত করার চেষ্টা করেন তবে পাথটি মেলে না এবং এটির মেয়াদ শেষ হবে না। document.cookie
মান, একটি কুকি জন্য পাথ অথবা মেয়াদ প্রদর্শন করা হয় না, তাই আপনি আহরণ করতে পারবে না কুকি মান দিকে তাকিয়ে করা হয়েছে।
আপনার যদি বিভিন্ন পৃষ্ঠাগুলি থেকে কুকিজের মেয়াদ শেষ করতে হয় তবে সেটিংস পৃষ্ঠার পথটি কুকি মানের মধ্যে সংরক্ষণ করুন যাতে আপনি এটি পরে টানতে পারেন বা সর্বদা "; path=/;"
কুকির মানটিতে যুক্ত করতে পারেন। তারপরে এটি কোনও পৃষ্ঠা থেকে শেষ হবে।
name = ""
হয় তবে নামহীন মানটি মুছতে আপনার পরিবর্তে এটি করা উচিত ।