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

很全很全的前端本地存儲講解

開發 前端
本人水平有限只用過那三種,不過人家說的也是事實,我就有兩個想法,第一是把標題改為“不太全的前端本地存儲講解”,第二種是把那不全的盡力補一下,嗯,做對的事情,我選擇了第二種,補充的東西在最后。

 

[[215001]]

發完之后,就有同學表示,你這也不全呀,還有評論說:吹牛不交稅……,應該是被人舉報了,現在看不到那條評論了,但是我郵箱里面有哦……本人水平有限只用過那三種,不過人家說的也是事實,我就有兩個想法,第一是把標題改為“不太全的前端本地存儲講解”,第二種是把那不全的盡力補一下,嗯,做對的事情,我選擇了第二種,補充的東西在最后。

正文開始……

三種本地存儲方式

一、cookie

前言

網絡早期最大的問題之一是如何管理狀態。簡而言之,服務器無法知道兩個請求是否來自同一個瀏覽器。當時最簡單的方法是在請求時,在頁面中插入一些參數,并在下一個請求中傳回參數。這需要使用包含參數的隱藏的表單,或者作為URL參數的一部分傳遞。這兩個解決方案都手動操作,容易出錯。cookie出現來解決這個問題。

作用

cookie是純文本,沒有可執行代碼。存儲數據,當用戶訪問了某個網站(網頁)的時候,我們就可以通過cookie來向訪問者電腦上存儲數據,或者某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)

如何工作

當網頁要發http請求時,瀏覽器會先檢查是否有相應的cookie,有則自動添加在request header中的cookie字段中。這些是瀏覽器自動幫我們做的,而且每一次http請求瀏覽器都會自動幫我們做。這個特點很重要,因為這關系到“什么樣的數據適合存儲在cookie中”。

存儲在cookie中的數據,每次都會被瀏覽器自動放在http請求中,如果這些數據并不是每個請求都需要發給服務端的數據,瀏覽器這設置自動處理無疑增加了網絡開銷;但如果這些數據是每個請求都需要發給服務端的數據(比如身份認證信息),瀏覽器這設置自動處理就大大免去了重復添加操作。所以對于那種設置“每次請求都要攜帶的信息(最典型的就是身份認證信息)”就特別適合放在cookie中,其他類型的數據就不適合了。

特征

  1. 不同的瀏覽器存放的cookie位置不一樣,也是不能通用的。
  2. cookie的存儲是以域名形式進行區分的,不同的域下存儲的cookie是獨立的。
  3. 我們可以設置cookie生效的域(當前設置cookie所在域的子域),也就是說,我們能夠操作的cookie是當前域以及當前域下的所有子域
  4. 一個域名下存放的cookie的個數是有限制的,不同的瀏覽器存放的個數不一樣,一般為20個。
  5. 每個cookie存放的內容大小也是有限制的,不同的瀏覽器存放大小不一樣,一般為4KB。
  6. cookie也可以設置過期的時間,默認是會話結束的時候,當時間到期自動銷毀

cookie值既可以設置,也可以讀取。

設置

客戶端設置

document.cookie = '名字=值'; document.cookie = 'username=cfangxu;domain=baike.baidu.com'    并且設置了生效域

注意: 客戶端可以設置cookie 的下列選項:expires、domain、path、secure(有條件:只有在https協議的網頁中,客戶端設置secure類型的 cookie 才能成功),但無法設置HttpOnly選項。

服務器端設置
不管你是請求一個資源文件(如 html/js/css/圖片),還是發送一個ajax請求,服務端都會返回response。而response header中有一項叫set-cookie,是服務端專門用來設置cookie的。

Set-Cookie 消息頭是一個字符串,其格式如下(中括號中的部分是可選的): Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

注意: 一個set-Cookie字段只能設置一個cookie,當你要想設置多個 cookie,需要添加同樣多的set-Cookie字段。
服務端可以設置cookie 的所有選項:expires、domain、path、secure、HttpOnly
通過 Set-Cookie 指定的這些可選項只會在瀏覽器端使用,而不會被發送至服務器端。

讀取

我們通過document.cookie來獲取當前網站下的cookie的時候,得到的字符串形式的值,它包含了當前網站下所有的cookie(為避免跨域腳本(xss)攻擊,這個方法只能獲取非 HttpOnly 類型的cookie)。它會把所有的cookie通過一個分號+空格的形式串聯起來,例如username=chenfangxu; job=coding

修改 cookie

要想修改一個cookie,只需要重新賦值就行,舊的值會被新的值覆蓋。但要注意一點,在設置新cookie時,path/domain這幾個選項一定要舊cookie 保持一樣。否則不會修改舊值,而是添加了一個新的 cookie。

刪除

把要刪除的cookie的過期時間設置成已過去的時間,path/domain/這幾個選項一定要舊cookie 保持一樣。

注意

如果只設置一個值,那么算cookie中的value; 設置的兩個cookie,key值如果設置的相同,下面的也會把上面的覆蓋。

cookie的屬性(可選項)

過期時間

如果我們想長時間存放一個cookie。需要在設置這個cookie的時候同時給他設置一個過期的時間。如果不設置,cookie默認是臨時存儲的,當瀏覽器關閉進程的時候自動銷毀

注意:document.cookie = '名稱=值;expires=' + GMT(格林威治時間)格式的日期型字符串; 

一般設置天數:new Date().setDate( oDate.getDate() + 5 ); 比當前時間多5天

一個設置cookie時效性的例子

function setCookie(c_name, value, expiredays){     var exdate=new Date();     exdate.setDate(exdate.getDate() + expiredays);     document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } 使用方法:setCookie('username','cfangxu',30)
expires 是 http/1.0協議中的選項,在新的http/1.1協議中expires已經由 max-age 選項代替,兩者的作用都是限制cookie 的有效時間。expires的值是一個時間點(cookie失效時刻= expires),而max-age 的值是一個以秒為單位時間段(cookie失效時刻= 創建時刻+ max-age)。
另外,max-age 的默認值是 -1(即有效期為 session );max-age有三種可能值:負數、0、正數。
負數:有效期session;
0:刪除cookie;
正數:有效期為創建時刻+ max-age

cookie的域概念(domain選項)

domain指定了 cookie 將要被發送至哪個或哪些域中。默認情況下,domain 會被設置為創建該 cookie 的頁面所在的域名,所以當給相同域名發送請求時該 cookie 會被發送至服務器。

瀏覽器會把 domain 的值與請求的域名做一個尾部比較(即從字符串的尾部開始比較),并將匹配的 cookie 發送至服務器。

客戶端設置

document.cookie = "username=cfangxu;path=/;domain=qq.com"
如上:“www.qq.com" 與 "sports.qq.com" 公用一個關聯的域名"qq.com",我們如果想讓 "sports.qq.com" 下的cookie被 "www.qq.com" 訪問,我們就需要用到 cookie 的domain屬性,并且需要把path屬性設置為 "/"。

服務端設置

Set-Cookie: username=cfangxu;path=/;domain=qq.com
注:一定的是同域之間的訪問,不能把domain的值設置成非主域的域名。

cookie的路徑概念(path選項)

cookie 一般都是由于用戶訪問頁面而被創建的,可是并不是只有在創建 cookie 的頁面才可以訪問這個 cookie。
因為安全方面的考慮,默認情況下,只有與創建 cookie 的頁面在同一個目錄或子目錄下的網頁才可以訪問。
即path屬性可以為服務器特定文檔指定cookie,這個屬性設置的url且帶有這個前綴的url路徑都是有效的。

客戶端設置

 最常用的例子就是讓 cookie 在根目錄下,這樣不管是哪個子頁面創建的 cookie,所有的頁面都可以訪問到了。

document.cookie = "username=cfangxu; path=/"

服務端設置

Set-Cookie:name=cfangxu; path=/blog

如上設置:path 選項值會與 /blog,/blogrool 等等相匹配;任何以 /blog 開頭的選項都是合法的。需要注意的是,只有在 domain 選項核實完畢之后才會對 path 屬性進行比較。path 屬性的默認值是發送 Set-Cookie 消息頭所對應的 URL 中的 path 部分。

domain和path總結:

domain是域名,path是路徑,兩者加起來就構成了 URL,domain和path一起來限制 cookie 能被哪些 URL 訪問。
所以domain和path2個選項共同決定了cookie何時被瀏覽器自動添加到請求頭部中發送出去。如果沒有設置這兩個選項,則會使用默認值。domain的默認值為設置該cookie的網頁所在的域名,path默認值為設置該cookie的網頁所在的目錄。

cookie的安全性(secure選項)

通常 cookie 信息都是使用HTTP連接傳遞數據,這種傳遞方式很容易被查看,所以 cookie 存儲的信息容易被竊取。假如 cookie 中所傳遞的內容比較重要,那么就要求使用加密的數據傳輸。

secure選項用來設置cookie只在確保安全的請求中才會發送。當請求是HTTPS或者其他安全協議時,包含 secure 選項的 cookie 才能被發送至服務器。

document.cookie = "username=cfangxu; secure"

把cookie設置為secure,只保證 cookie 與服務器之間的數據傳輸過程加密,而保存在本地的 cookie文件并不加密。就算設置了secure 屬性也并不代表他人不能看到你機器本地保存的 cookie 信息。機密且敏感的信息絕不應該在 cookie 中存儲或傳輸,因為 cookie 的整個機制原本都是不安全的

注意:如果想在客戶端即網頁中通過 js 去設置secure類型的 cookie,必須保證網頁是https協議的。在http協議的網頁中是無法設置secure類型cookie的。

httpOnly

這個選項用來設置cookie是否能通過 js 去訪問。默認情況下,cookie不會帶httpOnly選項(即為空),所以默認情況下,客戶端是可以通過js代碼去訪問(包括讀取、修改、刪除等)這個cookie的。當cookie帶httpOnly選項時,客戶端則無法通過js代碼去訪問(包括讀取、修改、刪除等)這個cookie。

在客戶端是不能通過js代碼去設置一個httpOnly類型的cookie的,這種類型的cookie只能通過服務端來設置。

cookie的編碼

cookie其實是個字符串,但這個字符串中等號、分號、空格被當做了特殊符號。所以當cookie的 key 和 value 中含有這3個特殊字符時,需要對其進行額外編碼,一般會用escape進行編碼,讀取時用unescape進行解碼;當然也可以用encodeURIComponent/decodeURIComponent或者encodeURI/decodeURI,查看關于編碼的介紹

第三方cookie

通常cookie的域和瀏覽器地址的域匹配,這被稱為第一方cookie。那么第三方cookie就是cookie的域和地址欄中的域不匹配,這種cookie通常被用在第三方廣告網站。為了跟蹤用戶的瀏覽記錄,并且根據收集的用戶的瀏覽習慣,給用戶推送相關的廣告。
關于第三方cookie和cookie的安全問題可以查看https://mp.weixin.qq.com/s/oOGIuJCplPVW3BuIx9tNQg

二、localStorage(本地存儲)

HTML5新方法,不過IE8及以上瀏覽器都兼容。

特點

  • 生命周期:持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。
  • 存儲的信息在同一域中是共享的。
  • 當本頁操作(新增、修改、刪除)了localStorage的時候,本頁面不會觸發storage事件,但是別的頁面會觸發storage事件。
  • 大小:據說是5M(跟瀏覽器廠商有關系)
  • 在非IE下的瀏覽中可以本地打開。IE瀏覽器要在服務器中打開。
  • localStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡
  • localStorage受同源策略的限制

設置

localStorage.setItem('username','cfangxu');

獲取

localStorage.getItem('username')
也可以獲取鍵名
localStorage.key(0) #獲取第一個鍵名

刪除

localStorage.removeItem('username')
也可以一次性清除所有存儲
localStorage.clear()

storage事件

當storage發生改變的時候觸發。
注意: 當前頁面對storage的操作會觸發其他頁面的storage事件
事件的回調函數中有一個參數event,是一個StorageEvent對象,提供了一些實用的屬性,如下表:

Property

Type

Description

key String The named key that was added, removed, or moddified
oldValue Any The previous value(now overwritten), or null if a new item was added
newValue Any The new value, or null if an item was added
url/uri String The page that called the method that triggered this change

sessionStorage

其實跟localStorage差不多,也是本地存儲,會話本地存儲

特點:

  • 用于本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問并且當會話結束后數據也隨之銷毀。因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。也就是說只要這個瀏覽器窗口沒有關閉,即使刷新頁面或進入同源另一頁面,數據仍然存在。關閉窗口后,sessionStorage即被銷毀,或者在新窗口打開同源的另一個頁面,sessionStorage也是沒有的。

cookie、localStorage、sessionStorage區別

  • 相同:在本地(瀏覽器端)存儲數據
  • 不同:

    localStorage、sessionStorage

    localStorage只要在相同的協議、相同的主機名、相同的端口下,就能讀取/修改到同一份localStorage數據。

    sessionStorage比localStorage更嚴苛一點,除了協議、主機名、端口外,還要求在同一窗口(也就是瀏覽器的標簽頁)下。

    localStorage是永久存儲,除非手動刪除。

    sessionStorage當會話結束(當前頁面關閉的時候,自動銷毀)

    cookie的數據會在每一次發送http請求的時候,同時發送給服務器而localStorage、sessionStorage不會。

 

三、擴展其他的前端存儲方式(不常用)

web SQL database

先說個會被取代的,為什么會被取代,主要有以下幾個原因:

  1. W3C舍棄 Web SQL database草案,而且是在2010年年底,規范不支持了,瀏覽器廠商已經支持的就支持了,沒有支持的也不打算支持了,比如IE和Firefox。
  2. 為什么要舍棄?因為 Web SQL database 本質上是一個關系型數據庫,后端可能熟悉,但是前端就有很多不熟悉了,雖然SQL的簡單操作不難,但是也得需要學習。
  3. SQL熟悉后,真實操作中還得把你要存儲的東西,比如對象,轉成SQL語句,也挺麻煩的。

indexedDB

來自MDN的解釋: indexedDB 是一種低級API,用于客戶端存儲大量結構化數據(包括, 文件/ blobs)。該API使用索引來實現對該數據的高性能搜索。雖然 Web Storage 對于存儲較少量的數據很有用,但對于存儲更大量的結構化數據來說,這種方法不太有用。IndexedDB提供了一個解決方案。

所以,IndexedDB API是強大的,但對于簡單的情況可能看起來太復雜了,所以要看你的業務場景來選擇到底是用還是不用。

indexedDB 是一個基于JavaScript的面向對象的數據庫。 IndexedDB允許你存儲和檢索用鍵索引的對象;

IndexedDB 鼓勵使用的基本模式如下所示:

  • 打開數據庫并且開始一個事務。
  • 創建一個 object store。
  • 構建一個請求來執行一些數據庫操作,像增加或提取數據等。
  • 通過監聽正確類型的 DOM 事件以等待操作完成。
  • 在操作結果上進行一些操作(可以在 request 對象中找到)

1、首先打開indexedDB數據庫

語法:
window.indexedDB.open(dbName, version)

var db; // 打開數據庫,open還有第二個參數版本號 var request = window.indexedDB.open('myTestDatabase'); // 數據庫打開成功后 request.onsuccess = function (event) {     // 存儲數據結果,后面所有的數據庫操作都離不開它。     db = request.result; } request.onerror = function (event) {     alert("Why didn't you allow my web app to use IndexedDB?!"); }  // 數據庫首次創建版本,或者window.indexedDB.open傳遞的新版本(版本數值要比現在的高) request.onupgradeneeded = function (event) {  }

onupgradeneeded事件: 更新數據庫的 schema,也就是創建或者刪除對象存儲空間,這個事件將會作為一個允許你處理對象存儲空間的 versionchange 事務的一部分被調用。在數據庫第一次被打開時或者當指定的版本號高于當前被持久化的數據庫的版本號時,這個 versionchange 事務將被創建。onupgradeneeded 是我們唯一可以修改數據庫結構的地方。在這里面,我們可以創建和刪除對象存儲空間以及構建和刪除索引。

2、構建數據庫

IndexedDB 使用對象存儲空間而不是表,并且一個單獨的數據庫可以包含任意數量的對象存儲空間。每當一個值被存儲進一個對象存儲空間時,它會被和一個鍵相關聯。

  // 數據庫首次創建版本,或者window.indexedDB.open傳遞的新版本(版本數值要比現在的高)   request.onupgradeneeded = function (event) {        //之前咱們不是在success中得到了db了么,為什么還要在這獲取,       //因為在當前事件函數執行后才會去執行success事件       var db = event.target.result;        // 創建一個對象存儲空間,keyPath是id,keyGenerator是自增的       var objectStore = db.createObjectStore('testItem',{keyPath: 'id',autoIncrement: true});       // 創建一個索引來通過id搜索,id是自增的,不會有重復,所以可以用唯一索引       objectStore.createIndex('id','id',{unique: true})        objectStore.createIndex('name','name');       objectStore.createIndex('age','age');        //添加一條信息道數據庫中       objectStore.add({name: 'cfangxu', age: '27'});    }

注意: 執行完后,在調試工具欄Application的indexedDB中也看不到,你得右鍵刷新一下。

創建索引的語法:

objectStore.createIndex(indexName, keyPath, objectParameters)  indexName:創建的索引名稱,可以使用空名稱作為索引。 keyPath:索引使用的關鍵路徑,可以使用空的keyPath, 或者keyPath傳為數組keyPath也是可以的。 objectParameters:可選參數。常用參數之一是unique,表示該字段值是否唯一,不能重復。例如,本demo中id是不能重復的,于是有設置:

3、添加數據

上面的代碼建好了字段,并且添加了一條數據,但是我們如果想在onupgradeneeded事件外面操作,接下來的步驟了。
由于數據庫的操作都是基于事務(transaction)來進行,于是,無論是添加編輯還是刪除數據庫,我們都要先建立一個事務(transaction),然后才能繼續下面的操作。
語法: var transaction = db.transaction(dbName, "readwrite");
第一個參數是事務希望跨越的對象存儲空間的列表,可以是數組或者字符串。如果你希望事務能夠跨越所有的對象存儲空間你可以傳入一個空數組。如果你沒有為第二個參數指定任何內容,你得到的是只讀事務。因為這里我們是想要寫入所以我們需要傳入 "readwrite" 標識。

var timer = setInterval(function () {     if(db) {         clearInterval(timer);         // 新建一個事務         var transaction = db.transaction(['testItem'], 'readwrite');         // 打開一個存儲對象         var objectStore = transaction.objectStore('testItem');         // 添加數據到對象中         objectStore.add({ name: 'xiaoming', age: '12' });         objectStore.add({ name: 'xiaolong', age: '20' });     } },100)

為什么要用一個間隔定時器? 因為這是一個demo,正常的是要有操作才能進行數據庫的寫入,在我們的demo中,js執行到transaction會比indexedDB的onsuccess事件回調快,導致會拿到db為undefined,所以寫了個間隔定時器等它一會。

4、獲取數據

var transaction = db.transaction(['testItem'], 'readwrite');  var objectStore = transaction.objectStore('testItem');  var getRquest = objectStore.get(1); getRquest.onsuccess = function (event) {     console.log(getRquest.result); } //輸出:{name: "cfangxu", age: "27", id: 1}

5、修改數據

var transaction = db.transaction(['testItem'], 'readwrite');  var objectStore = transaction.objectStore('testItem');  var getRquest = objectStore.put({ name: 'chenfangxu', age: '27', id:1 }); // 修改了id1的那條數據

6、刪除數據

var transaction = db.transaction(['testItem'], 'readwrite');  var objectStore = transaction.objectStore('testItem');  var getRquest = objectStore.delete(1); // 刪除了id為1的那條數據
上面的例子執行完后,一定一定要右鍵刷新indexedDB,它自己是不會變的。
責任編輯:龐桂玉 來源: segmentfault
相關推薦

2018-01-03 10:26:51

前端JavaScript模塊

2020-01-14 09:13:48

Tomcat調優配置

2015-02-13 10:35:08

openstackapi文檔

2020-05-12 08:39:50

JavaScript工具技術

2019-05-23 10:18:19

監控組件cpu

2010-08-10 08:58:55

2013-01-17 10:31:13

JavaScriptWeb開發firebug

2011-09-13 08:55:59

在這兒IM在這兒職業

2012-11-08 00:46:00

AMD服務器芯片

2009-06-14 08:34:53

OpenSolaris開源

2010-04-26 13:53:47

Unix Shell

2024-06-14 08:36:57

2012-07-17 11:40:10

情景音樂華為

2019-02-12 06:38:13

2012-03-15 16:52:02

聯想筆記本

2020-09-21 15:03:52

前端開發技術

2018-01-14 23:07:36

戴爾

2018-07-09 08:50:58

全閃存存儲容量

2025-01-13 00:00:05

2022-02-28 07:42:29

TCP網絡協議
點贊
收藏

51CTO技術棧公眾號

91精品国产自产| 国产精品一级片| 91尤物视频在线观看| 一本色道久久88亚洲综合88| 亚洲a∨日韩av高清在线观看| 中文字幕三级电影| 超碰在线无需免费| 日韩欧美二区| 色综合久久久网| 成人av免费看| 国产av无码专区亚洲av毛网站| 精品欧美日韩精品| 久久精品无码一区二区三区| 成人午夜伦理影院| 国产91精品久久久久久久网曝门| 影音先锋欧美精品| 中文字幕第三区| 秋霞a级毛片在线看| 老司机亚洲精品| 亚洲经典中文字幕| 精品无码国产一区二区三区av| 99久久久国产精品无码免费| 欧美国产偷国产精品三区| 在线视频国内自拍亚洲视频| 鲁鲁视频www一区二区| 久久久精品国产sm调教网站| 国产激情精品一区二区三区| 国产精品久久久久久久久晋中| 国产91色在线|| 日韩精品人妻中文字幕有码| gogo高清在线播放免费| 成人综合婷婷国产精品久久蜜臀 | 国产成人天天5g影院在线观看| 一本久道久久综合狠狠爱| 日韩精品一区在线| 国产成人永久免费视频| 午夜久久久久久久久久| 极品av少妇一区二区| 91精品国产综合久久福利软件 | 国产精品国产三级国产aⅴ入口| 97人摸人人澡人人人超一碰| 日韩三级久久久| 色呦呦在线资源| 久久精品国产第一区二区三区| 一区二区在线免费视频| 人妻换人妻a片爽麻豆| 在线高清欧美| 亚洲综合精品自拍| 国产精品久久亚洲| 欧美啪啪小视频| 欧美手机视频| 欧美日韩电影一区| 国产激情片在线观看| 亚洲爱情岛论坛永久| 在线亚洲精品| 久久久久久久久国产| 人妻丰满熟妇av无码久久洗澡| 亚洲无线观看| 日韩欧美a级成人黄色| 亚洲乱码一区二区三区| 亚洲AV午夜精品| 国产精品一区二区无线| 96国产粉嫩美女| 国产特级黄色片| 精品写真视频在线观看| 午夜欧美不卡精品aaaaa| 国产精品无码一区二区三区| 亚洲免费资源| 欧美日本精品一区二区三区| 午夜宅男在线视频| 成人bbav| 国产精品高潮呻吟| 一区二区三区不卡在线| 天天操天天干天天干| 日本欧洲一区二区| 久久久久国产精品www| 久久精品人妻一区二区三区| 欧美一区二区三区激情视频| 中国人与牲禽动交精品| 亚洲精品第二页| 国产精品男女| 婷婷五月综合激情| 青青国产91久久久久久| 国产精品天天狠天天看| 久久久久99精品| 亚洲高清免费| 国产成人黄色av| 久一视频在线观看| 日韩亚洲在线| 国产精品美女免费看| 91看片在线播放| 欧美福利在线| 日韩中文字幕在线视频播放| 中文字幕av网址| 电影一区二区在线观看| 亚洲精品狠狠操| 美国精品一区二区| 国产aⅴ精品一区二区三区久久| 日韩欧美视频在线| 国产 中文 字幕 日韩 在线| 麻豆视频久久| 欧美日韩成人在线| 欧美成人精品一区二区综合免费| 亚洲精品伦理| 在线观看日韩电影| 99久久99精品| **国产精品| 亚洲第一页自拍| 男女一区二区三区| 色综合久久网| 69久久夜色精品国产69乱青草| 青青草国产在线观看| 91精品啪在线观看国产18| 亚洲最新av在线| 妺妺窝人体色www在线下载| 亚洲精品一区二区妖精| 尤物tv国产一区| 久久久精品91| 久草这里只有精品视频| 成人黄色激情网| 国产又大又黑又粗| 久久97超碰色| 欧美日韩免费高清| 电影在线一区| 午夜精品福利一区二区三区蜜桃| 成人丝袜18视频在线观看| 日本人成精品视频在线| 成人h动漫精品一区二区无码| 久久婷婷国产综合精品青草| 久久超碰亚洲| 免费av在线电影| 欧美日韩91| 日韩中文在线中文网在线观看| 久久人人妻人人人人妻性色av| 色欧美自拍视频| 日韩美女视频中文字幕| 人妻与黑人一区二区三区| 成人爱爱电影网址| 久久99导航| 伊人影院在线视频| 无吗不卡中文字幕| 国产美女无遮挡网站| 欧美电影免费观看| 欧美性极品少妇| 亚洲精品永久视频| 成人av动漫| 亚洲日韩中文字幕在线播放| 成人无码精品1区2区3区免费看 | 亚洲午夜av| 26uuu另类亚洲欧美日本一| 69成人免费视频| 成人av影院在线| 成年人看的毛片| av在线亚洲色图| 久久久人成影片一区二区三区观看 | 欧美影院视频| 亚洲激情电影中文字幕| 久久99久久98精品免观看软件 | 青青视频在线免费观看| 在线亚洲观看| 精品午夜一区二区三区| 国产对白叫床清晰在线播放| 精品美女国产在线| 插吧插吧综合网| 美女爽到呻吟久久久久| 国产日韩在线视频| 少妇人妻精品一区二区三区| 亚洲午夜私人影院| 国产精品久久久毛片| 欧美限制电影| 成人激情春色网| 制服丝袜中文字幕在线| 精品久久人人做人人爰| 国产黄色录像视频| 亚洲激情自拍| 国产在线精品自拍| 成人福利在线观看视频| 精品日韩在线观看| 亚洲欧美精品一区二区三区| 国产日韩三级在线| 真人抽搐一进一出视频| 日韩av黄色在线| 久久av资源网站| 看黄色一级大片| www.亚洲人| 成人免费看片视频在线观看| 三级成人在线| 国产视频丨精品|在线观看| 久久免费看少妇高潮v片特黄 | 9.1在线观看免费| 亚洲免费影院| 国产精品亚洲不卡a| 色一区二区三区| 亚洲第一页中文字幕| 五月天婷婷导航| 久久综合精品国产一区二区三区| 午夜视频在线瓜伦| 国产精品密蕾丝视频下载| 国产日韩欧美综合| 蜜桃av在线播放| 久久久精品网站| 88av在线视频| 国产精品久久综合| 一区二区三区免费播放| 午夜天堂精品久久久久| 水蜜桃一区二区| 国产精品久久久久久久久免费高清| 亚洲欧洲日韩国产| 精品国产99久久久久久宅男i| 国产精品传媒入口麻豆| 亚洲自拍偷拍精品| 麻豆国产欧美日韩综合精品二区| 欧美午夜小视频| 日韩中文字幕有码| 日本精品国产| 日本久久亚洲电影| 污污视频在线看| 伊人亚洲福利一区二区三区| 人妻精品一区一区三区蜜桃91| 欧美体内she精视频| 欧美不卡视频在线观看| 最新久久zyz资源站| 男人的天堂最新网址| 婷婷综合网站| 亚洲精品欧美日韩专区| 成人美女大片| 尤物yw午夜国产精品视频明星| 粉嫩av一区二区夜夜嗨| 午夜视频在线观看一区| 国产精品视频一区二区三| 国产日韩欧美一区二区三区乱码 | 国产精品77777竹菊影视小说| 一区二区三区偷拍| 成人豆花视频| 国产成人精品久久亚洲高清不卡| 蜜桃成人365av| 亚洲激情小视频| 性一交一乱一透一a级| 欧美日韩国产高清一区二区| 国产一卡二卡三卡| 欧美性猛交xxxx富婆弯腰| 国产无码精品久久久| 亚洲精品五月天| 毛茸茸free性熟hd| 国产精品一区二区在线看| 加勒比av中文字幕| 三级国产在线观看| 久久久久久电影| 农村末发育av片一区二区| 99av国产精品欲麻豆| 日本一级黄视频| 欧美fxxxxxx另类| 午夜啪啪福利视频| 亚洲免费二区| 红桃一区二区三区| 亚洲另类春色校园小说| 国产精品偷伦视频免费观看国产| 美女福利一区二区三区| 日韩免费在线播放| 午夜精品久久久久久久久久蜜桃| 欧美中文在线字幕| 麻豆av在线导航| 日韩一区二区三区在线播放| aaa在线观看| 亚洲国产精品久久精品怡红院| 国产高清视频免费观看| 日韩一区二区精品| www.日本精品| 亚洲四区在线观看| 六月婷婷七月丁香| 久久精品在这里| 99久久99久久精品免费| 中文字幕制服丝袜一区二区三区| 欧美一级片在线视频| 一区二区激情小说| 国产综合精品视频| 欧美探花视频资源| www.我爱av| 亚洲精品视频在线观看视频| 韩日在线视频| 亚洲国产美女精品久久久久∴| 亚洲欧美日韩成人在线| 欧美一区二区免费观在线| jizz欧美激情18| 美女av在线免费看| 国产v综合ⅴ日韩v欧美大片| 成人高清一区| 日韩美女毛茸茸| 久久青草视频| 国产精品乱码一区二区三区| 免费av一区| 精品欧美一区二区精品久久| 免费视频一区三区| 强开小嫩苞一区二区三区网站| 91久久黄色| 亚洲高清免费在线观看| 久久中文精品| 99日在线视频| 99久久久久久| chinese全程对白| 偷拍一区二区三区| 亚洲一区中文字幕永久在线| 日本道免费精品一区二区三区| 久草视频在线资源站| 欧美性色19p| 亚洲福利在线观看视频| 国产一区二区三区在线免费观看| 最爽无遮挡行房视频在线| 青青久久aⅴ北条麻妃| av成人在线网站| 日本婷婷久久久久久久久一区二区 | 色综合综合网| 老司机激情视频| 蜜臂av日日欢夜夜爽一区| 日韩免费高清在线| 国产成人综合在线播放| 少妇精品无码一区二区免费视频| 一区二区三区免费| 中文字幕永久在线视频| 欧美日韩高清影院| 日韩欧美在线番号| 久久久久久久电影一区| 自拍偷拍亚洲图片| 亚洲国产一区二区精品视频 | 国产精品久久久久久久久毛片| 日韩精品视频免费在线观看| 婷婷伊人综合中文字幕| 久久国产精品电影| 激情av在线| 欧美亚洲另类视频| 97超碰成人| 在线观看三级网站| 韩国av一区二区三区| 女人十八毛片嫩草av| 一本大道久久a久久综合婷婷| 女人18毛片一区二区三区| 操日韩av在线电影| 91精品国产一区二区在线观看| 日韩和欧美的一区二区| 亚洲国产精品久久久久蝴蝶传媒| 日本成人在线免费视频| 精品一区二区三区在线观看国产 | 欧美激情99| 日韩xxxx视频| 成人精品一区二区三区四区| 激情五月少妇a| 日韩精品一区二区三区老鸭窝| 国产美女在线观看| 性欧美xxxx交| 91午夜精品| 久久久久久久9| 成人午夜精品一区二区三区| 国产污片在线观看| 亚洲国产欧美一区二区三区同亚洲| 国产美女一区视频| 精品不卡在线| 性色av一区二区怡红| 亚洲综合网在线观看| 91福利视频网站| av网站在线免费观看| 91精品在线观| 美女久久久久| 日韩一级免费在线观看| 久久久不卡网国产精品一区| www五月天com| 在线视频欧美日韩| 国产不卡精品| 亚洲国产精品无码av| 26uuu色噜噜精品一区二区| 日韩视频中文字幕在线观看| 欧美一区二区在线看| 欧洲成人综合网| 精品乱色一区二区中文字幕| 蜜乳av另类精品一区二区| 一级特黄曰皮片视频| 3d成人动漫网站| 国产在线91| 国产欧美一区二区三区视频| 一本一本久久a久久综合精品| 香蕉久久久久久av成人| 欧美性xxxx极品hd满灌| 五月天婷婷在线视频| 日产精品99久久久久久| 日韩精品电影| 无码人妻丰满熟妇啪啪网站| 欧美色道久久88综合亚洲精品| 国产免费永久在线观看| 91久久久久久国产精品| 中文日韩在线| 亚洲一区二区三区黄色| 欧美视频在线观看 亚洲欧| 日韩成人影视| 精品乱码一区二区三区| 精品一区二区在线免费观看| 国产精品白浆一区二小说| 亚洲日韩中文字幕| a级日韩大片| 日日干夜夜操s8| 亚洲18色成人| 免费黄网站在线播放|