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

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

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

[[410252]]

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

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

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

要不要彈出提示的開關在這里

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

使用 JavaScript 讀寫 Cookies

讀取當前所有的 Cookies,可以使用代碼:

  1. document.cookie 

運行效果如下圖所示:

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

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

  1. document.cookie = 'key=value' 

例如:

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

使用 FastAPI讀寫 Cookies

還有一種方式是在后端設置 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''網站正常運行'

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

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

沒有 URL 參數

有 URL 參數

至于讀取 Cookies 也非常簡單,并且還可以根據 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} 

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

運行效果如下圖所示:

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

  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} 

運行效果如下圖所示:

總結

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

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-10-15 21:08:31

PandasExcel對象

2022-06-28 09:31:44

LinuxmacOS系統

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監控

2022-03-12 20:38:14

網頁Python測試

2025-05-28 03:15:00

Scrapy數據sleep

2021-04-12 21:19:01

PythonMakefile項目

2021-03-18 23:28:45

Python反斜杠字符串

2023-10-28 12:14:35

爬蟲JavaScriptObject

2021-09-13 20:38:47

Python鏈式調用

2021-03-12 21:19:15

Python鏈式調用

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-04-19 23:29:44

MakefilemacOSLinux

2024-11-11 00:38:13

Mypy靜態類型

2024-05-24 09:07:06

JSONprint字符串

2021-07-27 21:32:57

Python 延遲調用

2021-10-03 20:08:29

HTTP2Scrapy

2021-05-08 19:33:51

移除字符零寬
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线视频观看 | 国产一区二区久久 | 国产 欧美 日韩 一区 | www.黄网| 欧美日韩在线一区 | 国产成人免费视频网站高清观看视频 | 中文字幕欧美一区二区 | 国产精品久久久久久久毛片 | 精品国产一区二区在线 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 色永久 | 国产视频在线一区二区 | 成人在线观看亚洲 | 久久国产精品视频 | 日韩精品一区二区三区在线观看 | 亚洲一区二区三区四区五区中文 | 久久久久久免费精品一区二区三区 | 国产一区| 国产在线高清 | 热久久性| 91精品亚洲 | 日韩欧美一区二区三区四区 | 国产精品国产a | 久久久久久亚洲精品 | 亚洲综合一区二区三区 | 欧美一区二区三区久久精品视 | www.日日干 | 狠狠亚洲 | 秋霞电影一区二区 | 国产精品成人一区二区三区 | 一级做a爰片久久毛片 | 91视频免费 | 久久久久中文字幕 | 91麻豆精品一区二区三区 | 久久综合av | 狠狠色狠狠色综合系列 | 91国产在线视频在线 | av毛片免费 | 日本精品一区二区三区在线观看 | 国产精品久久久久久久久免费高清 | 日韩成人在线免费视频 |