Cookie的理解

1》cookie详解


什么是cookie

An HTTP cookie (web cookie, browser cookie) is a small piece of data that a server sends to the user's web browser. The browser may store it and send it back with the next request to the same server. Typically, it's used to tell if two requests came from the same browser — keeping a user logged-in, for example. It remembers stateful information for the stateless HTTP protocol.

     cookie(“小甜饼”)就是服务器发送到我们web浏览器的一小块数据。浏览器会存储它并且当下次再访问同一个网站,web服务器会先看看它上次有没有他上次留下的cookies资料,有的话会依据cookie里的内容来判断使用者,送出特定的网页内容给你。


cookie的三大作用

-Session management
     logins,shopping carts,game scores,or anything else the server should remember

-Personalization(个性化设置)
     User preferences,themes,and other settings

-Tracking
     Recording and analyzing user behavior


Create Cookies (创建cookie)

When receiving an HTTP request, a server can send a Set-Cookie header with the response. The cookie is usually stored by the browser, and then the cookie is sent with requests made to the same server inside a Cookie HTTP header. An expiration date or duration can be specified, after which the cookie is no longer sent. Additionally, restrictions to a specific domain and path can be set, limiting where the cookie is sent.

    当服务器接收到一个http请求时会发送一个Set-Cookie的响应头,这cookie通常会被浏览器存储,并且这cookie会被写在访问同一个服务器的http请求头中。此外,我们使用了cookie的一些属性来限定cookie的使用。例如Domain属性能够在浏览器端对cookie发送进行限定;Expires属性则指定了该Cookie保存的时间限制;属性Path,则用来指定Cookie将被发送到服务器的哪一个目录路径下。

The Set-Cookie and Cookie headers

Set-Cookie 的响应头会从服务器端发送cookie到浏览器端。

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

[page content]

现在每个新的请求,浏览器会利用cookie 头把所有先前存储的cookies发送到服务器。

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry

Session cookie

上面的cookie是一个session cookie:当客户端关闭时它会被删除。因为它没有指定Expires或Max-Age指令。但是,Web浏览器可能会使用会话还原,这会使大多数会话cookie永久保留,就像浏览器从未关闭一样。

Permanent cookie

永久cookie只会在特定的时间过期而不是在客户端关闭时过期

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

Secure and HttpOnly cookies

安全cookie仅通过HTTPS协议通过加密请求发送到服务器。但是尽管安全,重要的东西还是不能放在cookie中。为了防止跨站点脚本(XSS)***,JavaScript的Document.cookie API无法访问HttpOnly cookie;它们只被发送到服务器。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

Scope of cookies(cookies 范围)

Domain和Path指令定义cookie的范围:cookie应发送到哪些URL。
Domain指定允许的主机接收cookie。如果未指定,则默认为当前文档位置的主机,不包括子域。如果指定了域,则始终包含子域。
例如,如果设置了Domain = mozilla.org,则cookie将包含在developer.mozilla.org等子域中。
Path表示在请求的URL中必须存在的URL路径,以便发送Cookie标头。 %x2F(“/”)字符被视为目录分隔符,子目录也将匹配。
For example, if Path=/docs is set, these paths will match:

/docs
/docs/Web/
/docs/Web/HTTP     

转载于:https://blog.51cto.com/12666319/2315268

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网的发展和普及,网站和应用程序越来越多,用户也越来越多。对于这些网站和应用程序来说,如何记录用户的信息和状态是一个非常重要的问题,因为只有这样才能提供更好的服务和更好的用户体验。而cookie、session、token就是三种常用的记录用户信息和状态的方式。 首先,cookie是一种存储在客户端浏览器中的文本文件,用于存储用户的一些信息。当用户在浏览器中打开一个网站时,网站服务器会发送一个包含一些信息的cookie给用户的浏览器。浏览器在接收到cookie后会以键值对的形式将它们存储在本地,然后在下一次访问该网站时再将cookie发送给服务器。服务器通过读取这些cookie中的信息,就可以知道该用户的一些状态和偏好,从而提供更好的服务。 其次,session是一种服务器端技术,用于记录用户的会话状态。当用户第一次访问一个网站时,网站服务器会为该用户创建一个session,然后在服务器端存储用户的一些信息。当用户进行一些操作时,服务器端会根据该用户的session来判断其当前的状态和权限,并根据这些信息进行相应的处理。当用户关闭浏览器时,与该用户相关的session会被销毁。 最后,token是一种用于验证用户身份的令牌。当用户输入用户名和密码进行登录时,服务器会生成一个token,并将该token返回给客户端。客户端在后续的请求中需要带上该token,服务器收到请求后会根据token来验证用户身份,从而决定是否允许该请求。token不存储在客户端,而是存储在服务器端的数据库或者内存中,因此可以防止一些与cookie相关的安全问题,例如CSRF攻击和 XSS攻击。 总的来说,cookie、session、token可以作为不同的方式来记录用户的信息和状态,这些方式都有自己的优缺点,应该根据具体的需求来选择适合的方式。同时,为了确保安全性,应该采取一些措施来减少一些可能出现的安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值