2016-10-14 21 views
0

設置cookie的功能刪除外部網站的cookies創建和jQuery的jQuery的自己的子域名

function setCookie(cookieName, cookieValue, cookieExpireDays) { 
     var d = new Date(); 
     d.setTime(d.getTime() + (cookieExpireDays * 24 * 60 * 60 * 1000)); 
     var expires = "expires=" + d.toUTCString(); 
     document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";" + "path=/"; 
    } 

刪除功能

function deleteCookie(name) { 
    var domain = location.hostname, 
     path = '/'; // root path 

    document.cookie = [ 
     name, '=', 
     '; expires=' + new Date(0).toUTCString(), 
     '; path=' + path, 
     '; domain=' + domain 
    ].join(''); 
} 

這對本地鏈接工作正常,但是當我嘗試使用它在外部網站上。我可以得到我的document.cookie,但deleteCookie函數不會刪除cookie。有任何想法嗎?

*請記住,我剛剛從谷歌瀏覽器的控制檯中運行這些腳本

+1

我可能是錯的,但我敢肯定你不能對外部網站的設置或刪除Cookie。看起來像是一個重大的安全風險。 – Santi

+0

我可以設置document.cookie。我可以在 console.log(document.cookie) 中看到這些餅乾我正在谷歌Chrome控制檯上運行腳本 –

+0

那麼你的編輯改變了事情。您添加了「請記住我正在控制檯中運行此操作」,之前沒有提及它。 – Santi

回答

0

好吧,我正在回答我自己的問題,因爲我改變了一些東西,現在它的作品。

var domain = location.hostname 

    function setCookie(cookiename, cookievalue, expiredays, domain) { 
      var date = new Date(); 
      date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
      var expires = "; expiredays=" + date.toGMTString(); 
      document.cookie = cookiename+ "=" + cookievalue+ expires + "; domain=" + domain + "; path=/"; 
    } 

function deleteCookie(cookiename, domain) { 
    setCookie(cookiename, "", -1, domain); 
} 

deleteCookie("Cookie_Name",domain) 
0

我可能會誤解你的問題的東西,但這裏是我如何處理得到,設置,我設置一個cookie的刪除。

小提琴:https://jsfiddle.net/hmvyu3L6/

<button class='set'>set</button> 
<button class='get'>get</button> 
<button class='delete'>delete</button> 

function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
    var expires = 'expires=' + d.toUTCString(); 
    document.cookie = cname + '=' + cvalue + '; ' + expires; 
    } 

    function getCookie(cname) { 
    var name = cname + '=', 
    ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
     c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
     return c.substring(name.length,c.length); 
     } 
    } 
    return ''; 
    } 

    function deleteCookie(name) { 
    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
    } 

    var value = 'hey there'; 

    $('.set').on('click', function() { 
    setCookie('testCookie', value, 360); 
    }); 

    $('.get').on('click', function() { 
    console.log(getCookie('testCookie')); 
    }); 

    $('.delete').on('click', function() { 
    deleteCookie('testCookie'); 
    }); 
+0

不起作用,它與我有的功能相似 –

0

如果cookie是僅Http,你將不能夠使用JavaScript或jQuery來刪除它們。

確保您的域和路徑完全匹配。如果它們不同(例如.subdomain.domain.com而不是.domain.com/path而不是/),那麼腳本不會影響cookie。

+0

您能否在這方面提供更多的信息。 例如: - 我的域名是www.env.helinco.com(var domain = location.hostname) 我正在使用path ='/'。我是否改變其他路線? –

+1

Cookie具有域和路徑。您的瀏覽器可以爲每個域和路徑的每個組合包含一個不同的cookie。如果你想刪除一個cookie,你需要設置新的cookie,並在過去的過期日期與你想刪除的cookie完全匹配,包括它的名字,域名和路徑。 –