<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## cookie的種植 瀏覽器自己并不能決定是否設置cookie(當然你可以通過調試器手動往里添加cookie),在它第一次訪問服務器的時候,服務器如果有需要會向瀏覽器傳達**種植**cookie的命令,這樣在它第二次訪問服務器的相同地址時會帶上這個種植的cookie ## cookie的設置 ### 設置單個cookie ``` res.setHeader('Set-Cookie','name=ahhh; Path=/read; Max-Age=30; Expires=Fri, 16 Mar 2018 16:15:22 GMT; HttpOnly; Secure'); ``` 可以發現**一個**cookie內部是使用 `;空格 ` 來分隔cookie-param的 服務器設置了cookie以后,在響應頭中會多一個`Set-Cookie`字段 ``` //res中 Set-Cookie: name=ahhh; Path=/read; Max-Age=30; Expires=Fri, 16 Mar 2018 16:15:22 GMT; HttpOnly; Secure ``` ### cookie參數 cookie參數主要是針對 `作用域`、`有效時間` 兩個方面。只有在規定的范圍內,cookie才會顯示、生效。 作用域的修飾包括 : - `Domain` : 訪問的域名必須是Domain規定的域名 - `Path` : 必須是以規定的Path的**開頭的**(比如/read,/read/1,/read/1/2)路徑才能訪問該cookie - `HttpOnly` : 只有通過 http請求才能查看到cookie,**不再能**通過瀏覽器控制臺查看,這意味著瀏覽器端不再能手動更改服務器所種植的cookie(但我們仍然能通過curl等其它方式作為客戶端傳遞'虛假'cookie) - `Secure`:必須是https協議才能查看 有效時間的修飾包括 - `Max-Age`:相對時間,單位為S,express中設置時單位為毫秒 ![](https://box.kancloud.cn/62c2304b698267223498caffa44709f0_513x165.png) - `Exipres`:絕對時間,且為UTC格式,express中設置時單位為毫秒 Max-Age和Expires的區別在于,Max-Age的值是相對時間,也就是說你只需要設置存貨多久(howlong),而Expires要先獲取當前時間(Date.now()),在這個時間的基礎之上再加上存貨時間 雖然設置不一樣,但最終它們呈現在瀏覽器application中都是一樣的,以一種日期格式顯現(而不是時間戳) ![](https://box.kancloud.cn/011f1be2bd40eab7385a4a5b9695a3a2_215x59.png) ### 設置多個cookie node中允許我們通過數組的形式設置多個cookie ``` req.setHeader('Set-Cookie',[cookie1,cookie2...]) ``` cookie之間有逗號隔開,每個cookie中的參數用`;空格`隔開 注意,不要妄圖想通過設置多次Set-Cookie來達到設置多個cookie的目的,因為前面的是會被后面的覆蓋的 但,話又說回來,實際上在響應報文里,多個cookie的設置的確是通過設置多個Set-Cookie字段來實現的 ``` Set-Cookie: ahhh=111; Path=/read; Max-Age=10; HttpOnly; Expires=Fri, 16 Mar 2018 16:29:56 GMT Set-Cookie: age=123 ``` 嗯,注意區分,雖然最底層是通過設置多個Set-Cookie字段實現多個cookie的設置,但Node.JS提供給我們的API卻不是這樣的,我們需要在一次setHeader Set-Cookie的設置里,通過傳遞一個數組的形式來設置多個cookie。 ## cookie的獲取 ``` req.headers['cookie'] ``` cookie獲取時**不會**顯示cookie的參數設置,另外如果有多個cookie,它們之間是用 `;空格` 隔開的 ``` ahhh=111; age=123 ``` ## cookie失效情景 - 指定了path,只會在指定path下才看得到cookie,**甚至是在瀏覽器的cookie查看器中也是!** - 請留意是否開啟了`Secure`,開啟的話只能在https下訪問到該cookie ## 關于中文字符 設置cookie是不能直接放中文的,會報錯 ![](https://box.kancloud.cn/45619f67597a41e54e63a8cf83b52f0c_600x207.png) 固需要使用`encodeURIComponent`進行編碼, 再獲取這種帶中文字符編碼的cookie時也需要`decodeURIComponent`進行解碼 ## Express中的cookie設置 ``` res.cookie('name','ahhh',{expires:new Date(Date.now()+10*1000)}); res.cookie('name','ahhh',{maxAge:10*1000}); ``` ``` req.headers.cookie; //name=ahhh;[空格]age=11 ``` ### cookie-parser 將headers里的cookie掛在了req上 并且解析成了對象 注意express獲取cookie,是用`req.cookies`(**s**),有s!!(而原生的是沒有s) ``` app.use(cookieParser()); console.log(req.cookies); <<<輸出 { name:ahhh ,age:11 } ``` ### express中的cookie參數 統一都是小駝峰命名 ### 支持設置帶中文的cookie express會自動進行編碼 ![](https://box.kancloud.cn/02da2778eb8aaa0128e173e6ecfcb24a_307x115.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看