代码之家  ›  专栏  ›  技术社区  ›  Nirjhar Vermani

创建和删除外部网站子域上的Cookie

  •  1
  • Nirjhar Vermani  · 技术社区  · 8 年前

    在Jquery中设置Cookie函数

    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=/";
        }
    

    Jquery中的删除函数

    function deleteCookie(name) {
        var domain = location.hostname,
            path = '/'; // root path
    
        document.cookie = [
            name, '=',
            '; expires=' + new Date(0).toUTCString(),
            '; path=' + path,
            '; domain=' + domain
        ].join('');
    }
    

    *请记住,我只是从Google Chrome的控制台运行这些脚本

    3 回复  |  直到 8 年前
        1
  •  1
  •   justDan    8 年前

    我可能误解了你的问题,但以下是我如何处理我设置的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');
      });
    
        2
  •  0
  •   John Wu    8 年前

    如果Cookie是HttpOnly,您将无法使用javascript或jquery删除它们。

    确保您的域和路径完全匹配。如果它们不同(例如。 .subdomain.domain.com 而不是 .domain.com /path 而不是 / )那么脚本将不会影响cookie。

        3
  •  0
  •   Nirjhar Vermani    8 年前

    好吧,我在回答我自己的问题,因为我改变了一些东西,现在它起作用了。

        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)