成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一日一技:前端與后端都是怎么讀寫 Cookies 的?

開發(fā) 前端
無論使用前端方式還是后端方式,你都可以通過在 Cookies 里面儲存一些信息,來實現(xiàn)某些開關(guān)或者記錄一些信息。

[[410252]]

大家應(yīng)該看過一些網(wǎng)站,在第一次訪問的時候,它會彈出一些小提示或者操作指導(dǎo),類似于下圖所示:

當(dāng)我關(guān)閉了這個提示以后,接下來它都不會彈出來。當(dāng)我關(guān)閉了瀏覽器再打開,它也不會再彈出來。但是,大家觀察截圖右上角,可以看到我并沒有登錄,那么網(wǎng)站是怎么“記住”了我關(guān)閉這個提示的呢?實際上是通過 Cookies 來記錄的。當(dāng)我點擊X 關(guān)閉這個提示的時候,網(wǎng)站的JavaScript 會往 Cookies 里面寫入一條標(biāo)記。當(dāng)我們每次打開這個網(wǎng)站新的頁面的時候,它都會判斷一下 Cookies 里面有沒有這個標(biāo)記。如果沒有這個標(biāo)記,就彈出提示。如果有這個標(biāo)記,就不彈出。

Cookies 本質(zhì)上是一個長字符串,里面使用分號隔開了很多項,每一項由 Key 和 Value 組成,叫做一個 Cookie。

要不要彈出提示的開關(guān)在這里

當(dāng)我們要往 Cookies 里面添加一條 Cookie 有兩種常用方式:使用 JavaScript 或者通過后端設(shè)置。

使用 JavaScript 讀寫 Cookies

讀取當(dāng)前所有的 Cookies,可以使用代碼:

  1. document.cookie 

運行效果如下圖所示:

需要注意的是,如果你要判斷某個鍵值是不是在 Cookies 里面,那么你需要做字符串匹配。這不能像 Object 一樣直接根據(jù) Key 去找 Value 或者判斷 Key 在不在里面。

要寫入一條 Cookie,我們可以使用代碼:

  1. document.cookie = 'key=value' 

例如:

這里我們使用document.cookie=新的值,看起來像是覆蓋了整個 Cookies,但實際上并不是這樣。如果你新增的 key 跟已有的相同,那么會覆蓋原有的這一個 Cookie的值,不影響其他的 Cookie;如果你新增的 key 不在原來的 Cookies 里面,那么它將會被添加到末尾。

使用 FastAPI讀寫 Cookies

還有一種方式是在后端設(shè)置 Cookies,我們以 FastAPI 為例來進行演示:

首先是向瀏覽器寫入 Cookies,使用的代碼如下:

  1. from fastapi import FastAPI, Response 
  2.  
  3.  
  4. app = FastAPI() 
  5.  
  6. @app.get('/'
  7. def index(response: Response, name: str = ''): 
  8.     if not name
  9.         name = 'kingname' 
  10.     response.set_cookie('name'name
  11.     return {'success'True'msg''網(wǎng)站正常運行'

這段代碼的關(guān)鍵是路由函數(shù)的第一個參數(shù)response: Response。它的值是一個Response對象。我們只需要調(diào)用這個對象的.set_cookie方法,就能把自定義的 Cookie 添加進去。需要注意的是,你不需要主動返回這個 response 對象。

運行效果如下圖所示,分別演示了有URL參數(shù)和沒有URL參數(shù)的情況。

沒有 URL 參數(shù)

有 URL 參數(shù)

至于讀取 Cookies 也非常簡單,并且還可以根據(jù) Key 指定要哪幾項:

  1. from typing import Optional 
  2. from fastapi import FastAPI, Cookie 
  3.  
  4.  
  5. app = FastAPI() 
  6.  
  7. @app.get('/'
  8. def index(name: str = '', info: Optional[str] = Cookie(None)): 
  9.     if not name
  10.         name = 'kingname' 
  11.     msg = f'{name} 你好,你的 Cookies中的info字段的值是: {info}' 
  12.     return {'success'True'msg': msg} 

我們注意到參數(shù)中有一項叫做info,這個參數(shù)名字就對應(yīng)了 Cookies 中某一項的 Key。只有這個 Key 存在,這個 info 參數(shù)才會有值,否則它就是 None。

運行效果如下圖所示:

如果你想從 Cookies 中拿多項,那么你可以多寫幾個參數(shù):

  1. @app.get('/'
  2. def index(name: str = '', info: Optional[str] = Cookie(None), is_new_user: Optional[bool] = Cookie(False)): 
  3.     if not name
  4.         name = 'kingname' 
  5.     msg = f'{name} 你好,你的 Cookies中的info字段的值是: {info}, 是新用戶嗎:{is_new_user}' 
  6.     return {'success'True'msg': msg} 

運行效果如下圖所示:

總結(jié)

無論使用前端方式還是后端方式,你都可以通過在 Cookies 里面儲存一些信息,來實現(xiàn)某些開關(guān)或者記錄一些信息。

本文轉(zhuǎn)載自微信公眾號「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系未聞Code公眾號。

 

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-10-15 21:08:31

PandasExcel對象

2025-05-28 03:15:00

Scrapy數(shù)據(jù)sleep

2021-04-12 21:19:01

PythonMakefile項目

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監(jiān)控

2022-03-12 20:38:14

網(wǎng)頁Python測試

2021-03-18 23:28:45

Python反斜杠字符串

2023-10-28 12:14:35

爬蟲JavaScriptObject

2021-09-13 20:38:47

Python鏈式調(diào)用

2021-03-12 21:19:15

Python鏈式調(diào)用

2024-07-30 08:11:16

2021-04-19 23:29:44

MakefilemacOSLinux

2024-07-30 08:16:18

Python代碼工具

2024-11-11 00:38:13

Mypy靜態(tài)類型

2021-10-03 20:08:29

HTTP2Scrapy

2024-05-24 09:07:06

JSONprint字符串

2021-05-08 19:33:51

移除字符零寬

2021-07-27 21:32:57

Python 延遲調(diào)用
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜欧美一区二区三区在线播放 | 精品91视频 | 日韩免费视频一区二区 | 精品综合 | 丝袜美腿一区二区三区动态图 | 午夜影院普通用户体验区 | 欧美视频在线播放 | 天天草狠狠干 | 久久99蜜桃综合影院免费观看 | 国产精品久久久久久妇女 | 成人在线视频一区二区三区 | 久久一二区 | 啪啪毛片| 国产精品毛片一区二区三区 | 中文天堂在线一区 | 国产精品91久久久久久 | 国产欧美在线 | 国产剧情一区 | 青青久草| 国产精品色 | 国产精品久久久久久238 | 久久国内 | 美女久久视频 | 久久国产精品久久 | 性做久久久久久免费观看欧美 | 国产精品夜夜夜一区二区三区尤 | 亚洲手机在线 | 成人亚洲 | caoporn国产| 在线一区 | 欧美激情一区二区三级高清视频 | 久久精品一 | 成人在线视频一区 | 国产精品一区一区 | 国产精品一区久久久久 | 美女一区二区在线观看 | 91超碰在线观看 | 99日韩 | 欧美黄色片 | 欧美一区日韩一区 | 日本中文字幕在线视频 |