首页 > 开发 > 综合 > 正文

轻松检测浏览器是否接受Cookies信息

2024-07-21 02:28:17
字体:
来源:转载
供稿:网友

  一种确定浏览器是否接受 cookie 的方法是先编写一个 cookie,然后再尝试读取这个 cookie。如果不能读取这个 cookie,则可以认为该浏览器不接受 cookie。

  我编写了一个简单的示例来说明如何测试 cookie 是否被接受。该示例包含两个页面。在第一个页面中,我编写了一个 cookie,然后把浏览器重新定向到第二个页面。第二个页面尝试读取这个 cookie,转而将浏览器重新定向到第一个页面,并向 url 添加一个带有测试结果的查询字符串变量。

  第一个页面的代码如下:

protected system.web.ui.webcontrols.label labelacceptscookies;
   private void page_load(object sender, system.eventargs e)
  ...{
  
   if(!ispostback)
   ...{
    writecookie();
   
   }
  }
  private void  writecookie()
  ...{
   if( request.querystring["acceptscookies"] ==null)
   ...{
    response.cookies["testcookie"].value = "ok";
    response.cookies["testcookie"].expires = datetime.now.addminutes(1);
    response.redirect("cookieread.aspx?redirect="+server.urlencode(request.url.tostring()));
   }
   else
   ...{
    labelacceptscookies.text = "接受 cookie = "+request.querystring["acceptscookies"];
   }
  }

  第一个页面测试是否有回信,如果没有,就搜索包含测试结果的查询字符串变量 (acceptscookies)。如果没有找到查询字符串变量,则表示测试还没有完成,代码就写出一个名为“testcookie”的 cookie。写出 cookie 之后,示例调用 response.redirect 来切换到测试页面 (testforcookies.aspx)。附加到测试页面的 url 的是名为 redirect 的查询字符串变量,该变量中包含了当前页面的 url,这样就能在执行测试后把重定向到该页面。

  测试页面可以完全由代码组成,不需要包含控件。以下就是使用的代码:

private void page_load(object sender, system.eventargs e)
  ...{
   readcookie();
  }
  private void readcookie()
  ...{
   string redirect  = request.querystring["redirect"];
   string acceptscookies ;
   // 是否接受 cookie?
   if(request.cookies["testcookie"] ==null)
    // 没有 cookie,因此不需要接受
    acceptscookies = "0";
   else
   ...{
    acceptscookies = "1";
    //删除测试 cookie
    response.cookies["testcookie"].expires = datetime.now.adddays(-1);
   }
   response.redirect(redirect + "?acceptscookies=" +acceptscookies, true);
}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表