精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文搞懂Cookie、Storage、IndexedDB

存儲 存儲軟件
隨著前端技術的發展,存儲變的越來越重要,就目前來看,瀏覽器主要支持三類存儲:Cookie、Storage、IndexedDB,下面分別介紹這三類存儲方式。

[[384063]]

隨著前端技術的發展,存儲變的越來越重要,就目前來看,瀏覽器主要支持三類存儲:Cookie、Storage、IndexedDB,下面分別介紹這三類存儲方式。

一、Cookie

1.1 定義

Cookie是一個保存在瀏覽器中的簡單的文本文件,該文件與特定的Web文檔關聯在一起,保存了該瀏覽器訪問這個Web文檔時的信息,當瀏覽器再次訪問這個Web文檔時這些信息可供該文檔使用。(HTTP是無狀態的協議,即HTTP協議本身不對請求和響應之間的通信狀態進行保存,為了實現期望的保存狀態功能,引入了cookie技術)

1.2 Cookie組成

在了解Cookie組成之前先了解一下Cookie的整個請求流程,這個流程分為類:一類是沒有Cookie信息狀態下的請求,另一類是存有Cookie狀態下的請求。

通過上面的流程圖可以看出,Cookie是在服務端生成的,經過查詢資料了解到其是在從服務端發送的響應報文內的一個叫做Set-Cookie的首部字段信息,響應報文中有該首部字段則通知客戶端保存Cookie,則Cookie的組成則跟Set-Cookie可以設置哪些值相關,目前主要有以下幾類:

NAME=VALUE

Cookie的名稱和值,其中NAME是唯一標識cookie的名稱,不區分大小寫;VALUE是存儲在Cookie里的字符串值,該值必須經過URL編碼。

Domain=域名

Cookie有效的域,發送到這個域的所有請求都會包含對應的Cookie。(若不指定則默認為創建Cookie的服務器的域名)

Path=PATH

請求URL中包含這個路徑才會把Cookie發送到服務器(若不指定則默認為文檔所在的文件目錄)

Expires=DATE

Cookie的有效期,默認情況下,瀏覽器會話結束后會刪除所有cookie。

Secure

設置后僅在HTTPS安全通信時才會發送Cookie

HttpOnly

設置后只能在服務器上讀取,不能再通過JavaScript讀取Cookie

  1. const express = require('express'); 
  2.  
  3. const app = express(); 
  4.  
  5. app.get('/', (req, res) => { 
  6.     res.cookie('myCookie''myCookie', { 
  7.         expires: new Date(Date.now() + 900000), 
  8.         secure: true
  9.         httpOnly: true 
  10.     }); 
  11.     res.send('get請求已經被處理'); 
  12. }) 
  13. app.listen(8090, () => { 
  14.     console.log('8090端口已經啟動!!!'); 
  15. }); 

通過請求 http://127/.0.0.1:8090 來看看其結果:

第一次返回的Cookie結果

2. 后續請求所帶的Cookie信息 

1.3 Cookie特點

  • 每個Cookie不超過4096字節;
  • 每個域中Cookie個數有限制,就拿最新版來說:IE和Edge不超過50個;Firefox不超過150個;Opera不超過180個;Safari和Chrome沒有限制;
  • Cookie超過單個域的上限,瀏覽器會刪除之前設置的Cookie;
  • 創建的Cookie超過最大限制,該Cookie會被靜默刪除;
  • 可設置失效時間,沒有設置則會話結束會刪除Cookie;
  • 每個請求均會攜帶Cookie,若Cookie過來會帶來性能問題;
  • 受同源策略限制

1.4 Cookie的操作

Cookie存儲到瀏覽器端之后仍然可以對其進行讀、寫、刪除,由于js對Cookie操作的支持并不是很友好,所以需要進行一些簡單的封裝。

  1. class CookieUtil { 
  2.     // 獲取Cookie中的對應屬性 
  3.     static get(name) { 
  4.         const cookies = document.cookie; 
  5.         const cookiesArr = cookies.split(';'); 
  6.         for (let index = 0; index < cookiesArr.length; index++) { 
  7.             const presentCookieArr = cookiesArr[index].split('='); 
  8.             if (presentCookieArr[0] === name) { 
  9.                 return presentCookieArr[1]; 
  10.             } 
  11.         } 
  12.  
  13.         return null
  14.     } 
  15.  
  16.     // 設置對應的Cookie值 
  17.     static set(name, value, expires, path, domain, secure) { 
  18.         let cookieText = `${name}=${value}`; 
  19.         if (expires instanceof Date) { 
  20.             cookieText += `; expire=${expires.toGMTString()}`; 
  21.         } 
  22.         if (path) { 
  23.             cookieText += `; path=${path}`; 
  24.         } 
  25.         if (domain) { 
  26.             cookieText += `; domain=${domain}`; 
  27.         } 
  28.         if (secure) { 
  29.             cookieText += `; secure`; 
  30.         } 
  31.         document.cookie = cookieText; 
  32.     } 
  33.  
  34.     // 刪除對應的Cookie 
  35.     static deleteCookie(name) { 
  36.         CookieUtil.set(name'', new Date(0)); 
  37.     } 

二、Web Storage

Web Storage的目的是解決通過客戶端存儲不需要頻繁發送回服務器的數據時使用cookie的問題,其提供了cookie之外的存儲會話數據的途徑和跨會話持久化存儲大量數據的機制,其主要有兩個對象:localStorage和sessionStorage,localStorage是永久存儲機制,sessionStorage是跨會話的存儲機制。

2.1 sessionStorage

sessionStorage是跨會話的存儲機制,具有以下特點:

  1. sessionStorage對象值存儲會話數據,其生命周期會存儲到瀏覽器關閉。(在該過程中刷新頁面其數據不受影響)
  2. 瀏覽器在實現存儲寫入時使用同步阻塞方式,數據會被立即提交到存儲。
  3. 獨立打開同一個窗口同一個頁面或一個Tab,sessionStorage也是不一樣的。
  4. 存儲空間大小限制為每個源不超過5M。
  1. // 使用方法存儲數據 
  2. sessionStorage.setItem('sessionName1''value1'); 
  3. // 使用屬性存儲數據 
  4. sessionStorage.sessionName2 = 'value2'
  5.  
  6. // 使用方法取得數據 
  7. const sessionValue1 = sessionStorage.getItem('sessionName1'); 
  8. console.log('sessionValue1的值為:', sessionValue1); 
  9. // 使用屬性取得數據 
  10. const sessionValue2 = sessionStorage.sessionName2; 
  11. console.log('sessionValue2的值為:', sessionValue2); 
  12.  
  13. // 循環遍歷sessionStarage 
  14. for (let index = 0; index < sessionStorage.length; index++) { 
  15.     // 使用key()方法獲得指定索引處的名稱 
  16.     const key = sessionStorage.key(index); 
  17.     const value = sessionStorage.getItem(key); 
  18.     console.log('循環遍歷結果:'key, value); 
  19.  
  20. // 使用方法刪除值 
  21. sessionStorage.removeItem('sessionName1'); 
  22. // 使用delete刪除值 
  23. delete sessionStorage.sessionName2; 
  24.  
  25. // 使用clear()方法清空sessionStorage 
  26. sessionStorage.clear(); 

2.2 localStorage

localStorage是永久存儲機制,具有以下特點:

  1. 生命周期是永久的,除非被清除,否則永久保存。
  2. 存儲空間大小限制為每個源不超過5M。
  3. 受同源策略限制。
  4. 瀏覽器存儲時采用同步存儲方式。
  1. // 使用方法存儲數據 
  2. localStorage.setItem('localName1''value1'); 
  3. // 使用屬性存儲數據 
  4. localStorage.localName2 = 'value2'
  5.  
  6. // 使用方法取得數據 
  7. const localValue1 = localStorage.getItem('localName1'); 
  8. console.log('localValue1的值為:', localValue1); 
  9. // 使用屬性取得數據 
  10. const localValue2 = localStorage.localName2; 
  11. console.log('localValue2的值為:', localValue2); 
  12.  
  13. // 循環遍歷localStarage 
  14. for (let index = 0; index < localStorage.length; index++) { 
  15.     // 使用key()方法獲得指定索引處的名稱 
  16.     const key = localStorage.key(index); 
  17.     const value = localStorage.getItem(key); 
  18.     console.log('循環遍歷結果:'key, value); 
  19.  
  20. // 使用方法刪除值 
  21. localStorage.removeItem('localName1'); 
  22. // 使用delete刪除值 
  23. delete localStorage.localName2; 
  24.  
  25. // 使用clear()方法清空localStorage 
  26. localStorage.clear(); 

三、IndexedDB

3.1 IndexedDB整個結構

對于整個IndexedDB為上述圖中所示:

  • 一個域名下可以包含多個數據庫;
  • 一個數據庫中包含多個對象倉庫,就類似于Mysql一個庫中有多張表一樣。
  • 每個對象倉庫中包含多條數據記錄。

3.2 主要特點

IndexedDB是瀏覽器中存儲結構化數據的一個方案,其設計幾乎是完全異步的,主要有以下特點:

鍵值對存儲

在對象倉庫中,數據以“鍵值對”形式保存,每個數據記錄都有獨一無二的主鍵。

異步

IndexedDB操作時不會鎖死瀏覽器,用戶依然可以進行其它操作。

支持事務

一些列操作步驟之中只要有一步失敗,整個事務就都取消,數據庫回滾到事務發生之前的狀態,不存在只改寫一部分數據的情況。

受同源策略限制

只能訪問自身域名下的數據庫,不能跨域訪問數據庫。

存儲空間大

每個源都有存儲空間的限制,而且這個限制跟瀏覽器有關,例如Firefox限制每個源50MB,Chrome為5MB。

支持二進制存儲

不僅可以存儲字符串,還可以存儲二進制數據(ArrayBuffer和Blob)

3.3 數據庫操作

IndexedDB像很多其它數據庫一樣有很多操作,下面就通過實戰的方式一起了解這些操作。

3.3.1 初始化數據庫

第一步是初始化數據庫,傳入創建的數據庫名和版本,獲取對應的數據庫操作實例。

  1. class IndexedDBOperation { 
  2.   constructor(databaseName, version) { 
  3.       this.atabaseName = databaseName; 
  4.       this.version = version; 
  5.       this.request = null
  6.       this.db = null
  7.   } 
  8.  
  9.   // 數據庫初始化操作 
  10.   init() { 
  11.       this.request = window.indexedDB.open(this.databaseName, this.version); 
  12.       return new Promise((resolve, reject) => { 
  13.           this.request.onsuccess = event => { 
  14.               this.db = event.target.result; 
  15.               console.log('數據庫打開成功'); 
  16.               resolve('success'); 
  17.           }; 
  18.           this.request.onerror = event => { 
  19.               console.log('數據庫打開報錯'); 
  20.               reject('error'); 
  21.           }; 
  22.           this.request.onupgradeneeded = event =>{ 
  23.               this.db = event.target.result; 
  24.               console.log('數據庫升級'); 
  25.               resolve('upgradeneeded'); 
  26.           }; 
  27.       }); 
  28.   } 

3.3.2 對象倉庫操作

數據是在對象倉庫中存儲的,創建好數據庫后則需要創建所需的數據倉庫

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 創建數據倉庫 
  4.   createObjectStore(objectStoreName, options) { 
  5.       let objectStore = null
  6.       if (!this.db.objectStoreNames.contains(objectStoreName)) { 
  7.           objectStore = this.db.createObjectStore(objectStoreName, options); 
  8.       } 
  9.       return objectStore; 
  10.   } 

3.3.3 數據操作

不管是關系型數據庫還是非關系型數據庫,CURD肯定是必不可少的,誰讓我們是“CURD工程師”呢!!!

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 新增內容 
  4.   add(objectStore, content) { 
  5.       objectStore.add(content); 
  6.   } 
  7.    
  8.   // 獲取內容 
  9.   get(objectStore, id) { 
  10.       const request = objectStore.get(id); 
  11.       return new Promise((resolve, reject) => { 
  12.           request.onsuccess = resolve; 
  13.           request.onerror = reject; 
  14.       }); 
  15.   } 
  16.    
  17.   // 更新內容 
  18.   update(objectStore, content) { 
  19.       const request = objectStore.put(content); 
  20.       request.onsuccess = event => { 
  21.           console.log('更新成功'); 
  22.       }; 
  23.       request.onerror = event => { 
  24.           console.log('更新失敗'); 
  25.       }; 
  26.   } 
  27.    
  28.   // 刪除內容 
  29.   remove(objectStore, deleteId) { 
  30.       const request = objectStore.delete(deleteId); 
  31.       request.onsuccess = event => { 
  32.           console.log('刪除成功'); 
  33.       }; 
  34.       request.onerror = event => { 
  35.           console.log('刪除失敗'); 
  36.       }; 
  37.   } 

3.3.4 遍歷內容

提到IndexedDB數據庫,不得不提其的游標操作。

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 打印全部數據 
  4.   printAllDataByCursor(objectStore) { 
  5.       const cursorRequest = objectStore.openCursor(); 
  6.       cursorRequest.onsuccess = event => { 
  7.           const cursor = event.target.result; 
  8.           if (cursor) { 
  9.               console.log(`利用游標打印的內容,id為${cursor.key}, 值為${cursor.value}`); 
  10.               // 移動到下一條記錄 
  11.               cursor.continue(); 
  12.           } 
  13.       }; 
  14.   } 

3.3.5 調用代碼

上面寫了一個數據庫的類,但是仍然不知道怎么調用呀,下面就用一個demo講述其調用。

  1. const indexedDBOperation = new IndexedDBOperation('dbName1', 1); 
  2. indexedDBOperation 
  3. .init() 
  4. .then(type => { 
  5.     const objectStoreName = 'testObjectStore'
  6.     if (type === 'upgradeneeded') { 
  7.         indexedDBOperation.createObjectStore(objectStoreName, { 
  8.             keyPath: 'id' 
  9.         }); 
  10.     } 
  11.     const transaction = indexedDBOperation.db.transaction([objectStoreName], 'readwrite'); 
  12.     const objectStore = transaction.objectStore(objectStoreName); 
  13.  
  14.     indexedDBOperation 
  15.     .get(objectStore, 1) 
  16.     .then(event => { 
  17.         if (event.target.result) { 
  18.             indexedDBOperation.update(objectStore, { 
  19.                 id: 1, 
  20.                 name'執鳶者+紙鳶' 
  21.             }); 
  22.             console.log('數據庫中已經存在', event.target.result, ',則進行更新操作'); 
  23.         } 
  24.         else { 
  25.             indexedDBOperation.add(objectStore, { 
  26.                 id: 1, 
  27.                 name'執鳶者' 
  28.             }); 
  29.             console.log('數據庫中不存在,則進行添加'); 
  30.         } 
  31.     }) 
  32.     .catch(console.log); 
  33.  
  34.     indexedDBOperation.printAllDataByCursor(objectStore); 
  35.  
  36.     transaction.onsuccess = event => { 
  37.         console.log('事務操作成功'); 
  38.     }; 
  39.     transaction.onerror = event => { 
  40.         console.log('事務操作失敗'); 
  41.     }; 
  42.     transaction.oncomplete = event => { 
  43.         console.log('整個事務成功完成'); 
  44.     } 
  45. }) 
  46. .catch(console.log); 

參考文獻

  • 瀏覽器數據庫 IndexedDB 入門教程
  • javascript高級程序設計4
  • IndexedDB API

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

 

責任編輯:武曉燕 來源: 執鳶者
相關推薦

2019-11-06 17:30:57

cookiesessionWeb

2024-04-12 12:19:08

語言模型AI

2022-03-24 08:51:48

Redis互聯網NoSQL

2021-03-22 10:05:59

netstat命令Linux

2023-09-08 08:20:46

ThreadLoca多線程工具

2023-09-15 12:00:01

API應用程序接口

2019-12-04 13:50:07

CookieSessionToken

2023-08-24 16:50:45

2024-06-05 11:43:10

2023-04-03 15:04:00

RPCPHP語言

2019-11-19 08:00:00

神經網絡AI人工智能

2022-06-07 10:13:22

前端沙箱對象

2021-06-30 08:45:02

內存管理面試

2022-08-15 15:39:23

JavaScript面向對象數據

2021-01-13 05:21:59

參數

2020-03-18 14:00:47

MySQL分區數據庫

2023-10-16 08:16:31

Bean接口類型

2023-03-06 21:29:41

mmap技術操作系統

2023-05-22 13:27:17

2023-09-02 21:27:09

點贊
收藏

51CTO技術棧公眾號

日韩一级在线| 国产精品毛片久久久| 欧美国产乱子伦 | 麻豆精品在线视频| 日韩亚洲精品电影| 国产高潮视频在线观看| sis001欧美| 亚洲视频在线一区二区| 精品国产乱码久久久久久蜜柚| 日韩国产亚洲欧美| 欧美日韩网址| 在线丨暗呦小u女国产精品| 香蕉视频在线观看黄| 欧美裸体视频| 日韩美女视频19| 国产伦精品一区二区三区在线| 综合网在线观看| 99视频精品视频高清免费| 亚洲精美色品网站| 日韩欧美中文视频| 主播大秀视频在线观看一区二区| 午夜久久久影院| 在线视频91| 麻豆av电影在线观看| 国产精品1区二区.| 国产精品香蕉av| 精品国产一区二区三区四| 亚洲欧美一区在线| 深夜福利一区二区| 日本一级免费视频| 琪琪久久久久日韩精品| 欧美一区二区三区在线观看视频| 日本黄网站免费| 看黄在线观看| 亚洲一区视频在线观看视频| 在线播放 亚洲| 国产免费a∨片在线观看不卡| zzijzzij亚洲日本少妇熟睡| 亚洲综合在线小说| 中文字幕福利视频| 亚洲欧美网站| 97碰在线观看| 国产午夜福利一区二区| 欧美区日韩区| 久久99精品久久久久久青青91 | 久久久久免费精品| 九色porny视频在线观看| 亚洲欧洲中文日韩久久av乱码| 亚洲国产婷婷香蕉久久久久久99 | 中文字幕日韩欧美精品在线观看| av无码av天天av天天爽| 国产suv精品一区| 精品蜜桃在线看| 色男人天堂av| 国产精久久一区二区| 欧美精品一卡二卡| 第一区免费在线观看| 看片一区二区| 欧美亚洲日本国产| 无限资源日本好片| 国产国产一区| 欧美日韩另类一区| 999这里有精品| 亚洲一区有码| 日韩一区二区麻豆国产| 亚洲国产日韩在线一区| 98视频精品全部国产| 欧美va天堂va视频va在线| 免费黄色a级片| 噜噜噜狠狠夜夜躁精品仙踪林| 亚洲激情电影中文字幕| 欧美做受喷浆在线观看| 国产欧美日韩在线一区二区| 亚洲最新av网址| 中文字幕第69页| 综合在线一区| 羞羞色国产精品| 亚洲另类在线观看| 免费国产亚洲视频| 97超碰人人模人人爽人人看| 国产综合在线播放| 95精品视频在线| 亚洲国产精品一区二区第四页av| 九七久久人人| 亚洲午夜一区二区| 欧美激情精品久久久久久小说| 国产精品久久久久久久久久齐齐| 欧美一区二区视频网站| 在线观看国产免费视频| 成人精品亚洲| 欧美激情videoshd| av毛片在线免费观看| 久久99精品国产麻豆不卡| av蓝导航精品导航| 大地资源中文在线观看免费版| 1000精品久久久久久久久| 亚洲精品蜜桃久久久久久| 巨茎人妖videos另类| 在线91免费看| 亚洲一区二区乱码| 99成人超碰| 97精品在线观看| 伊人久久成人网| 成人动漫一区二区| 色播亚洲婷婷| av2020不卡| 欧美女孩性生活视频| 看全色黄大色黄女片18| 久久看人人摘| 欧美性视频网站| 国产麻豆免费视频| 国产日产欧美一区二区三区| 中文字幕人妻熟女人妻洋洋| 91国拍精品国产粉嫩亚洲一区| 日韩免费一区二区三区在线播放| 欧美日韩中文字幕视频| av成人国产| 91在线高清免费观看| 黄色在线视频观看网站| 五月天婷婷综合| 精品人妻一区二区三| 欧美日韩在线播放视频| 91精品国产91久久久久福利| 精品人妻一区二区三区含羞草| 国产偷国产偷亚洲高清人白洁| www.xxx麻豆| 在线免费成人| 少妇高潮久久77777| 天天射天天干天天| 91亚洲大成网污www| 可以在线看黄的网站| 成人在线免费电影网站| 亚洲人在线视频| av中文在线播放| 成人av片在线观看| 欧美精品在欧美一区二区| 91精品亚洲一区在线观看| 国产亚洲精品激情久久| 欧美黑人一区二区| 99精品视频一区| 日本精品久久久久久久久久| 无人区乱码一区二区三区| 按摩亚洲人久久| 亚洲天堂狠狠干| 国产精品久久久久久久久果冻传媒 | 精品久久久久久久久久国产| 日本精品一二三| 欧美午夜久久| 国产精品久久久久久久免费大片| 牛牛电影国产一区二区| 精品国产网站在线观看| 国产亚洲色婷婷久久99精品| 国产精品69毛片高清亚洲| 国内精品国产三级国产99| 久久的色偷偷| 欧美插天视频在线播放| 亚洲av无码乱码国产精品久久| 亚洲欧美日韩国产中文在线| 激情图片中文字幕| 欧美 日韩 国产一区二区在线视频 | 视色,视色影院,视色影库,视色网| 91精品一久久香蕉国产线看观看| 久久精品成人一区二区三区| 国产区精品在线| 亚洲午夜视频在线| 一二三不卡视频| 日韩中文欧美在线| 一区二区av| 日本精品一区二区三区在线观看视频| 欧美富婆性猛交| 十八禁一区二区三区| 欧美日韩免费区域视频在线观看| 久久精品一区二区免费播放 | 艳妇臀荡乳欲伦亚洲一区| 成人三级做爰av| 亚洲国产日韩欧美一区二区三区| 精品欧美一区二区久久久伦| 婷婷综合六月| 久久精品视频亚洲| 高潮一区二区三区乱码| 日韩欧美国产视频| 亚洲欧洲综合网| 国产高清在线精品| 国产男女在线观看| 97精品在线| 国产美女在线精品免费观看| 希岛爱理一区二区三区av高清| 日韩在线播放视频| 免费a视频在线观看| 欧洲精品在线观看| 久久r这里只有精品| 91丨九色丨尤物| 色噜噜狠狠一区二区| 欧美特黄视频| 亚洲7777| 国产精品自在| 国产精品夜间视频香蕉| 爱看av在线| 色噜噜亚洲精品中文字幕| 亚洲欧美国产高清va在线播放| 欧美性高跟鞋xxxxhd| 国产一二三区精品| 久久久99精品久久| 亚洲成a人片在线www| 青青草97国产精品免费观看无弹窗版| 一二三四中文字幕| 欧美亚洲在线日韩| 久久精精品视频| 国产精品成人**免费视频| 欧美在线一区二区三区四| 麻豆免费在线观看| 亚洲视频一区二区| 天堂网在线观看视频| 欧美一级精品在线| 中文字幕av资源| 精品久久久久久中文字幕| 欧美一级片在线视频| 久久久电影一区二区三区| 国产高潮视频在线观看| 国产在线国偷精品免费看| 992kp快乐看片永久免费网址| 激情欧美日韩| 国产精品一二三在线观看| 欧美综合在线视频观看| 狼狼综合久久久久综合网| 亚洲**毛片| 国产一区玩具在线观看| 欧美日韩国产网站| 国产ts人妖一区二区三区| 成人av影院在线观看| 久久电影一区二区| 日本www在线| 中文字幕精品一区久久久久 | 日韩午夜在线视频| 国产高清在线| 亚洲精品自拍视频| 五月婷婷丁香六月| 亚洲第一网站免费视频| 国产成人三级在线观看视频| 精品三级在线看| 亚洲国产精品suv| 国内精品国产成人国产三级粉色 | 亚洲精品成人a在线观看| 女教师淫辱の教室蜜臀av软件| 国产日产欧美一区| 成人激情五月天| 欧美国产精品v| 久久久久久国产免费a片| 国产午夜亚洲精品理论片色戒| 亚洲天堂成人av| 91麻豆国产福利在线观看| 亚洲国产果冻传媒av在线观看| 99热精品一区二区| 中文字幕xxx| 久久久久成人黄色影片| 在线免费看黄视频| 国产拍欧美日韩视频二区| 能免费看av的网站| 国产目拍亚洲精品99久久精品| 国产 欧美 在线| 欧美国产精品一区| 久草手机视频在线观看| 亚洲黄色小视频| 日韩精品一区三区| 欧美日韩免费区域视频在线观看| 五月婷婷激情视频| 欧美中文字幕一区| 国产又爽又黄又嫩又猛又粗| 欧美一区二视频| www.久久成人| 亚洲国产私拍精品国模在线观看| 免费国产在线观看| 中文字幕久久久av一区| 超碰在线caoporn| 欧美激情日韩图片| 亚洲欧洲日本韩国| 国产一区在线播放| 超碰在线成人| 日韩av在线电影观看| 亚洲第一天堂| 免费 成 人 黄 色| 日本成人在线电影网| 中文字幕乱码在线人视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久青草视频在线观看| 色综合天天视频在线观看| 中文字幕人妻色偷偷久久| 欧美大片在线观看一区| 欧美另类自拍| 欧美精品在线免费播放| 天堂8中文在线最新版在线| 成人黄色大片在线免费观看| 国产乱论精品| 中文字幕一区二区三区有限公司 | 7777免费精品视频| 成人不卡视频| 国产乱码一区| 日韩在线观看一区| av在线播放天堂| 美腿丝袜亚洲色图| 看全色黄大色黄女片18| 国产精品福利电影一区二区三区四区| 久久久综合久久久| 欧美视频日韩视频| 人人妻人人澡人人爽久久av| 色婷婷久久av| 天堂av中文在线观看| 99高清视频有精品视频| 欧美丝袜一区| 日韩少妇内射免费播放18禁裸乳| 狠狠v欧美v日韩v亚洲ⅴ| 人妻丰满熟妇av无码久久洗澡| 亚洲精品久久嫩草网站秘色| 中文字幕777| 亚洲欧美在线看| 6699嫩草久久久精品影院| 91精品在线播放| 精品大片一区二区| 日韩av在线第一页| 国产精品亚洲一区二区三区在线| 亚洲色图 激情小说| 狠狠干狠狠久久| 欧美自拍偷拍第一页| 久久亚洲一区二区三区四区五区高| 综合在线影院| 精品国产一区二区三区麻豆免费观看完整版 | 被灌满精子的波多野结衣| 久久国产精品无码网站| 18禁裸乳无遮挡啪啪无码免费| 亚洲图片欧美视频| 99精品人妻无码专区在线视频区| 日韩中文字幕第一页| 一二区成人影院电影网| 日本公妇乱淫免费视频一区三区| 99热在线精品观看| 黄色在线免费播放| 亚洲自拍偷拍网站| 精品久久久久中文慕人妻| 久久久精品999| 四虎国产精品免费久久| 亚洲啪啪av| 免费在线视频一区| 国产又黄又粗的视频| 欧美午夜寂寞影院| jizz日韩| 成人国产精品久久久久久亚洲| 不卡视频在线| 久久精品在线播放| 你懂的在线网址| 日韩美女av在线免费观看| 九九在线精品| 日韩精品一区中文字幕| 亚洲国产成人一区二区三区| 久久精品偷拍视频| 中文字幕久久久av一区| 免费成人毛片| 中文字幕第一页亚洲| 国产成人av自拍| 日本a在线观看| 日韩www在线| 午夜精品成人av| 一区二区三视频| 国产麻豆精品久久一二三| 久久久91视频| 337p日本欧洲亚洲大胆色噜噜| 国产夫妻在线| 日韩国产欧美精品| 精品在线观看免费| 豆国产97在线 | 亚洲| 国产视频精品免费播放| 欧美日韩亚洲国产| 最新不卡av| 成人免费视频网站在线观看| 久久久精品免费看| 中文字幕日韩在线视频| 精品一区视频| 欧美v在线观看| 国产精品久久影院| 午夜免费福利视频| 热草久综合在线| 国产精品福利在线观看播放| 成人做爰69片免费| 色综合中文字幕| 黄色精品免费看| 精品国产一区二区三区麻豆免费观看完整版 | 中文子幕无线码一区tr| 国产精品自产拍| 国产69久久精品成人| 久久福利影院| 中文在线观看免费视频| 欧美午夜电影网| 国产盗摄在线视频网站| 日韩免费一区二区三区| 国产精品夜夜嗨| 一级黄色av片| 九九热99久久久国产盗摄| 久久99性xxx老妇胖精品| 天美一区二区三区| 日本精品一级二级| а_天堂中文在线|