• 220505 How cookie works


    As we know that a cookie is a small and non-edible plain text file. It is stored in the browse, to be more precise, stored in the client side local. It simply contains a small amount of data. (location of cookie)

    The data in the cookie is sent over by the server, and It will be used in subsequent requests as an identifier of sorts. Cookies are mainly used to remember state(log in state, shopping cart items, user preferences etc.)

    Cookies are created when the server sends over one or more Set-Cookie headers with its response:

    Set-Cookie: NAME=VALUE
    

    It could be any name-value pair, but each cookie can contain only 1 name-value pair. If you need more than 1 cookie, then multiple Set-Cookie headers are needed, like :

    HTTP/2.0 200 OK
    Content-Type: text/html
    Set-Cookie: viola=red_panda
    Set-Cookie: mathia=polar_bear
    

    Once the cookie is set, all subsequent requests to the server next will also have the cookies in its request header.

    GET /subsequnt/example/ HTTP/2
    Host: example.com
    Cookie: viola=red_panda; mathia=polar_bear
    

    Even though cookies are usually created on the server, you cao also create them on the client-side with JavaScript, using document.cookie.

    Browser cookies also have a number of attributes in addition to the name-value pair mentioned earliler.

    Adding special prefixes to the cookie name also forces execute certain requirements.

    • If your cookie name starts with __Secure- : it must be set with the secure flag from a page served with HTTPS.
    • If your cookie name starts with __Host- : it must be set with the secure flag from a page served with HTTPS, and must not have a domain specified and its path must be /.

    The rest of the attributes are optional but can impact cookie behaviour signigicantly depending on what values are set.

    • Expires=<date> : When a cookie passes its expiry date, it will no longer be sent with browser requests, and instead will be deleted. The date value is a HTTP timestamp.
    • Max-Age=<number> : Also related to a cookie's expiry, but in seconds. After the specified amount of time, the cookie will expire, so setting it to 0 or negative number means instant expiry. Max-Age takes precedence over Expires is both are set.
    • Domain=<domain-value : Specifies the host where the browser cookie gets sent to. Only a single domain is allowed. If not present, this defaults to the current document URL's host. When specified, all sub-domains are included as well.
    • Path=<path-value> : Cookie will only be sent if the path exists in the current URL.
    • Secure : Cookie will only be sent when the request is made with HTTPS.
    • HttpOnly : JavaScript cannot access the cookie through document.cookie (to mitigate XSS attacks)
    • SameSite=<samesite-value> : Specifies if a cookie is sent with cross-origin-request.
      • Strict : means the cookie is only sent for requests originating from the same URL as the current one.
      • Lax : means the cookie is not sent on cross-site requests, bull will be sent if the user navigates to the origin site from an external site.
      • None : means the cookie will be sent on both samesite and cross-site requests, but can only be used if the Secure attribute is also set.

    To create a new cookie, you can do something like this :

    document.cookie = "example=hello_cookie"
    

    If you want more, you can do this repeatly.

    To reset cookie, or get rid of cookie, you can set it expire attribute:

    documen.cookie = "example=hello;expires=Thu, 01 Jan 1970 00:00:00 GMT"
    
  • 相关阅读:
    vue chrome调试工具开启
    mac显示隐藏文件
    mac网络变慢?
    57-文件处理小结
    56-文件修改的两种方式
    54-with管理文件操作上下文
    53-文件的三种打开方式
    51-基本文件操作
    50-Python2和3字符编码的区别
    49-字符编码
  • 原文地址:https://www.cnblogs.com/jaycethanks/p/16227655.html
Copyright © 2020-2023  润新知