首页  ·  知识 ·  云计算
ASP.NET(c#)如何判断浏览器是否支持cookies
网友    综合  编辑:dezai   图片来源:网络
有两种情况,一种是浏览器本身不支持,另一种是用户自己禁止了.(比如IE6中,工具-Internet选项-隐私-高级,自己定义禁止了)
 有两种情况,一种是浏览器本身不支持,另一种是用户自己禁止了.(比如IE6中,工具-Internet选项-隐私-高级,自己定义禁止了)



using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {


            HttpBrowserCapabilities sbText = Request.Browser;

            string s = sbText.Cookies.ToString();

            //s的值是true的话就是支持,false就是不支持

            Response.Write(s);

        }

    }

}



 

 

 

确定 Cookie 是否被接受的一种方法是尝试编写一个 Cookie,然后再尝试读取该 Cookie。如果无法读取您编写的 Cookie,则可以假定浏览器不接受 Cookie。 



下面的代码示例演示如何测试浏览器是否接受 Cookie。此示例由两个页面组成。第一个页面写出 Cookie,然后将浏览器重定向到第二个页面。第二个页面尝试读取该 Cookie。然后再将浏览器重定向回第一个页面,并将带有测试结果的查询字符串变量添加到 URL。 



第一个页面的代码如下所示:

 

protected void Page_Load(object sender, EventArgs e)

{

     if (!Page.IsPostBack) 

     {

           if (Request.QueryString["AcceptsCookies"] == null) 

           { 

               Response.Cookies["TestCookie"].Value = "ok"; 

               Response.Cookies["TestCookie"].Expires = DateTime.Now.AddMinutes(1);                            

               Response.Redirect("TestForCookies.aspx?redirect=" + Server.UrlEncode(Request.Url.ToString())); 

           } 

          else 

          { 

               Label1.Text = "Accept cookies = " + Server.UrlEncode( Request.QueryString["AcceptsCookies"]); 

          } 

     } 

}

 

 

 

 



该页面先测试以确定是不是回发,如果不是,则查找包含测试结果的查询字符串变量名AcceptsCookies。

如果不存在查询字符串变量,表示测试还未完成,因此代码会写出一个名为 TestCookie 的 Cookie。写出 

Cookie 后,该示例调用 Redirect 来切换到 TestForCookies.aspx 测试页。附加到测试页 URL 的信息是一个名为 redirect 的查询字符串变量,该变量包含当前页的 URL;这样就能在执行测试后重定向回此页面。测试页可完全由代码组成;不需要包含控件。下面的代码示例阐释了该测试页。 

protected void Page_Load(object sender, EventArgs e)



    string redirect = Request.QueryString["redirect"]; 

    string acceptsCookies; 

    if(Request.Cookies["TestCookie"] ==null) 

    {

    acceptsCookies = "no"; 

    }

    else 

    {

        acceptsCookies = "yes"; // Delete test cookie. Response.Cookies["TestCookie"].Expires = DateTime.Now.AddDays(-1); 

    } 

    Response.Redirect(redirect + "?AcceptsCookies=" + acceptsCookies, true); 

}

 



 

读取重定向查询字符串变量后,代码尝试读取 Cookie。出于管理目的,如果该 Cookie 存在,则立即删除。测试完成后,代码通过 redirect 查询字符串变量传递给它的 URL 构造一个新的 URL。新 URL 也包括一个包含测试结果的查询字符串变量。最后一步是使用新 URL 将浏览器重定向到最初页面。

该示例的一个改进是可将 Cookie 测试结果保存到永久存储区(如数据库)中,这样就不必在用户每次查看最初页面时都重复进行测试。(默认情况下,在会话状态中存储测试结果需要 Cookie。)

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读