c# - Session 和 Cookie 有什么区别?

标签 c# asp.net session cookies

Session 和 Cookie 有什么区别?

分别应该在什么情况下使用?

最佳答案

session

Sessions每个用户存储在服务器上的内存中(或替代 Session-State )。 session 使用 cookie( session key )将用户绑定(bind)到 session 。这意味着没有“敏感”数据存储在用户机器上的 cookie 中。

Sessions通常用于在您浏览网站时维护状态。但是,它们也可以用于保存经常访问的对象。 仅当 session 状态设置为 InProc 时,如果设置为另一个 Session-State mode该对象还必须是可序列化的。

Session["userName"] = "EvilBoy";

if(Session["userName"] != null)
  lblUserName.Text = Session["userName"].ToString();

Cookies

Cookies每个用户存储在用户机器上。 cookie 通常只是一些信息。 Cookie 通常用于简单的用户设置颜色偏好等。 任何敏感信息都不应存储在 cookie 中。

您永远不能完全相信 cookie 没有被用户或外部来源篡改,但是如果安全是一个大问题并且您必须使用 cookie,那么您可以加密您的 cookie 或将它们设置为仅通过 SSL 传输.用户可以随时清除他的 cookie 或完全不允许 cookie,因此您不能仅仅因为用户过去访问过您的网站就指望它们存在。

//add a username Cookie
Response.Cookies["userName"].Value = "EvilBoy";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10);
//Can Limit a cookie to a certain Domain
Response.Cookies["userName"].Domain = "Stackoverflow.com";

//request a username cookie
if(Request.Cookies["userName"] != null)
   lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

旁注

值得一提的是ASP.NET也支持cookieless状态管理

关于c# - Session 和 Cookie 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623815/

相关文章:

c# - 如何防止使用属性验证器执行 C# 方法?

c# - 如何使用IConfigurationSectionHandler进行全局配置?

c# - 更新面板内的中继器 - ItemComand 代码问题 - 在代码隐藏中使用 ScriptManager 调用 javascript 函数

asp.net - ASP.NET Core 的 Keycloak 客户端

asp.net - 如何防止用户直接输入url

android - 通过 httpget 发送 cookie 值但没有得到所需的响应

node.js - 仅套接字 IO session 不持久

c# - 将 TextBox 的文本传递给 C# 中的另一个窗体?

c# - ASP.NET 动态生成的事件代码未运行

php - 如何将 session ID 传递给运行蛋糕的 php 站点?