【问题标题】:Cookie Detection , Redirect if Non javascriptCookie 检测,如果非 javascript 则重定向
【发布时间】:2013-06-15 13:51:36
【问题描述】:

试图编写一个 JavaScript 代码来检测用户是否在他们的浏览器中禁用了 cookie。如果他们这样做,他们将被重定向到另一个页面。如果他们启用了 cookie,它就会像往常一样直接通过。

我的代码已经可以使用,但在重定向之前它仍然会在页面上停留片刻。无论如何让它即时。快速检测的一个例子是here(尝试禁用cookies)http://optusnet.com.au 您会看到它是即时的,并且不会先加载页面请求。

    <script type="text/javascript"> 
/* function to create cookie @param name of the cookie @param value of the cookie @param validity of the cookie */
 function createCookie(name, value, days) 
 { 
    var expires; 
    if (days) 
    { 
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
            expires = "; 
            expires=" + date.toGMTString();
    } 
    else 
        expires = ""; 
        document.cookie = name + "=" + value + expires + "; path=/"; 
    }

    function readCookie(name) 
    { 
        var nameEQ = name + "="; 
        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 eraseCookie(name)
    {
        createCookie(name, "", -1); 
    }

    /* This function will create a new cookie and reading the same cookie. */
    function areCookiesEnabled() 
    {
        var r = false; 
        createCookie("testing", "Hello", 1); 
        //creating new cookie 
        if (readCookie("testing") != null)
        {
            //reading previously created 
            cookie r = true; 
            eraseCookie("testing");
        }
        return r; //true if cookie enabled.
    } 
    </script> 
    <script> 
        if(!areCookiesEnabled()) 
        { 
            //redirect to page
        }
    </script>

【问题讨论】:

标签: javascript redirect cookies


【解决方案1】:

您将无法使用客户端代码(即 JavaScript)使其“即时”,因为必须加载页面才能运行此代码。但是,您可以使用服务器端代码来实现这一点(就像您链接到的页面一样)。无论您的服务器端语言是什么,您都必须这样做:

  • 在加载您的第一页时,设置一个 cookie 并立即向您的主页发送重定向指令。
  • 在您的主页加载时,检查 cookie。如果不存在 cookie,则禁用 cookie,因此重定向到第三个(错误)页面。
  • 如果cookie存在,让页面正常加载。

或者,您可以尝试通过减少“检查”页面所需的 HTTP 请求数量(即在第一页上不包含任何样式等,然后重定向)来使其更快如果测试通过,则转到“正确”页面)并根据乔的评论使用更有效的检测方法;但是,您将无法使用客户端代码实现立即重定向。

【讨论】:

  • 所以提到的页面使用服务器端脚本来做到这一点?
  • @Burfi 是的 - 这是在完全不加载页面的情况下执行重定向的唯一方法。如果您在访问链接之前打开开发者工具或类似工具,您会看到服务器的即时响应是 301 重定向。
猜你喜欢
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
相关资源
最近更新 更多