如何检测服务器端是否禁用了cookie?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (272)

如何在服务器(服务器端)检测浏览器中的Cookie是否被禁用?可能吗?

详细的解释:我正在处理服务器上的HTTP请求。我想通过Set-Cookie标题设置一个cookie 。那时我需要知道cookie是由客户端浏览器设置还是我设置cookie的请求将被忽略。

提问于
用户回答回答于

使用cookie集发送重定向响应; 在处理cookie的(特殊)重定向URL测试时 - 如果它重定向到正常处理,否则重定向到错误状态。

请注意,这只能告诉你浏览器允许设置cookie,但不能设置多长时间。我的FF允许我强制所有cookie进入“会话”模式,除非该网站被特别添加到例外列表 - 当FF关闭时,无论服务器指定过期,这些cookie都将被丢弃。这是我总是运行FF的模式。

用户回答回答于

你可以使用Javascript来完成

库:

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);
}

function areCookiesEnabled() {
    var r = false;
    createCookie("testing", "Hello", 1);
    if (readCookie("testing") != null) {
        r = true;
        eraseCookie("testing");
    }
    return r;
}

要运行的代码:

alert(areCookiesEnabled());

记得

这只适用于Javascript启用!

扫码关注云+社区

领取腾讯云代金券