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

兩種給 Http 添加狀態的方式,都不完美

開發 項目管理
給 http 添加狀態,那就給每個請求打上個標記,然后在服務端存儲這個標記對應的數據。這樣每個被標記的請求都可以找到對應的數據,自然可以做到登錄、權限等狀態的存儲。

我們知道,http 是無狀態的,也就是說上一次請求和下一次請求之間沒有任何關聯。但是我們要實現應用的功能,很多時候是需要有狀態的,比如登錄之后,再添加購物車,那就應該識別出是登錄用戶做的。

怎么給 http 請求添加上狀態呢?

這個問題的解決有兩種方案:服務端存儲的 session + cookie 的方案,客戶端存儲的 token 的方案。

但其實這兩種方案都不怎么樣,都不夠完美。

為什么這么說呢?我們分別來看一下:

服務端存儲的 session + cookie

給 http 添加狀態,那就給每個請求打上個標記,然后在服務端存儲這個標記對應的數據。這樣每個被標記的請求都可以找到對應的數據,自然可以做到登錄、權限等狀態的存儲。

這個標記應該是自動帶上的,所以 http 設計了 cookie 的機制,在里面存儲的數據是每次請求都會帶上的。

然后根據 cookie 里的標記去查找的服務端對應的數據叫做 session,這個標記就是 session 的 id。

如圖,因為請求自動帶上 cookie,那兩次請求就都可以找到 id 為 1 對應的 session,自然就知道當前登錄的用戶是誰,也可以存儲其他的狀態數據。

這就是 session + cookie 的給 http 添加狀態的方案。

大家覺得這種方案有問題么?

有問題,而且問題還挺多的。

最大的一個問題就是臭名昭著的 CSRF(跨站請求偽造):

CSRF

因為 cookie 會在請求時自動帶上,那你在一個網站登錄了,再訪問別的網站,萬一里面有個按鈕會請求之前那個網站的,那 cookie 依然能帶上。而這時候就不用再登錄了。

這樣萬一點了這個按鈕之后做了一些危險的操作呢?

是不是就很危險。

而且一般這種利用 CSRF 漏洞的網站都會偽裝的很好,讓你很難看出破綻來,這種網站叫做釣魚網站。

為了解決這個問題,我們一般會驗證 referer,就是請求是哪個網站發起的,如果發起請求的網站不對,那就阻止掉。

但這樣依然不能完全解決問題,萬一你用的瀏覽器也是有問題的,能偽造 referer 呢?

所以一般會用隨機值來解決,每次登錄隨機生成一個值,放到 session 中,后面的請求需要包含這個值才行,否則就認為是非法的。

這個隨機值叫做 token,可以放在參數中,也可以放在 header 中,因為釣魚網站拿不到這個隨機值,就算帶了 cookie 也沒發通過服務端的驗證。

這是 session + cookie 這種方案的一個缺點,但是是有解決方案的。

它還有別的缺點,比如分布式的時候:

分布式 session

session 是把狀態數據保存在服務端,那么問題來了,如果有多臺服務器呢?

當并發量上去了,單臺服務器根本承受不了,自然需要做集群,也就需要多臺服務器來提供服務。

而且現在后端還會把不同的功能拆分到不同的服務中,也就是微服務架構,自然也需要多臺服務器。

那不同服務器之間的 session 怎么同步?

登錄之后 session 是保存在某一臺服務器的,之后可能會訪問到別的服務器,這時候那臺服務器是沒有對應的 session 的,就沒法完成對應的功能。

這個問題的解決有兩種方案:

一種是 session 復制,也就是通過一種機制在各臺機器自動復制 session,并且每次修改都同步下。這個有對應的框架來做,比如 java 的 spring-session。

各臺服務器都做了 session 復制了,那你訪問任何一臺都能找到對應的 session。

還有一種方案是把 session 保存在 redis,這樣每臺服務器都去那里查,只要一臺服務器登錄了,其他的服務器也就能查到 session,這樣就不需要復制了。

還好,session 在分布式時的這個問題也算是有解決方案的。

但你你以為這就完了么?session + cookie 還有跨域的問題:

跨域

cookie 為了安全,是做了 domain 的限制的,設置 cookie 的時候會指定一個 domain,只有這個 domain 的請求才會帶上這個 cookie。

而且還可以設置過期時間、路徑等:

那萬一是不同 domain 的請求呢?也就是跨域的時候,怎么帶 cookie 呢?

a.guang.com 和 b.guang.com 這種還好,只要把 domain 設置為頂級域名 guang.com 就可以了,那二三級域名不同也能自動帶上。

但如果頂級域名也不同就沒辦法了,這種只能在服務端做下中轉,把這倆個域名統一成同一個。

上面說的不是 ajax 請求,ajax 請求有額外的機制:

ajax 請求跨域的時候是不會挾帶 cookie 的,除非手動設置 withCredentials 為 true 才可以。

而且也要求后端代碼設置了對應的 header:

Access-Control-Allow-Origin: "當前域名";
Access-Control-Allow-Credentials: true

這里的 allow origin 設置 * 都不行,必須指定具體的域名才能接收跨域 cookie。

這是 session + cookie 方式的第三個坑,好在也是有解決方案的。

我們做下小結:

session + cookie 的給 http 添加狀態的方案是服務端保存 session 數據,然后把 id 放入 cookie 返回,cookie 是自動攜帶的,每個請求可以通過 cookie 里的 id 查找到對應的 session,從而實現請求的標識。這種方案能實現需求,但是有 CSRF、分布式 session、跨域等問題,不過都是有解決方案的。

session + cookie 的方案確實不太完美,我們再來看另一種方式怎么樣:

客戶端存儲的 token

session + cookie 的方案是把狀態數據保存在服務端,再把 id 保存在 cookie 里來實現的。既然這樣的方案有那么多的問題,那我反其道而行之,不把狀態保存在服務端了,直接全部放在請求里,也不放在 cookie 里了,而是放在 header 里,這樣是不是就能解決那一堆問題了呢?

token 的方案常用 json 格式來保存,叫做 json web token,簡稱 JWT,我們就拿這個來說吧。

JWT 是保存在 request header 里的一段字符串(比如用 header 名可以叫 authorization),它分為三部分:

如圖 JWT 是由 header、payload、verify signature 三部分組成的:

header 部分保存當前的加密算法,payload 部分是具體存儲的數據,verify signature 部分是把 header 和 payload 還有 salt 做一次加密之后生成的。(salt,鹽,就是一段任意的字符串,增加隨機性)。

這三部分會分別做 Base64,然后連在一起就是 JWT 的 header,放到某個 header 比如 authorization 中:

authorization: barer xxxxx.xxxxx.xxxx

請求的時候把這個 header 帶上,服務端就可以解析出對應的 header、payload、verify signature 這三部分,然后根據 header 里的算法也對 header、payload 加上 salt 做一次加密,如果得出的結果和 verify signature 一樣,就接受這個 token。

把狀態數據都保存在 payload 部分,這樣就實現了有狀態的 http:

而且這種方式是沒有 session + cookie 那些問題的,不信我們分別來看一下:

CSRF:因為不是通過自動帶的 cookie 來關聯服務端的 session 保存的狀態,所以沒有 CSRF 問題,沒法通過 cookie 攻擊。

分布式 session:因為狀態不是保存在服務端,所以無論訪問哪臺服務器都行,只要能從 token 里解析出狀態數據就行。

跨域:因為不是 cookie 那一套,自然也沒有跨域的限制,只要手動帶上 JWT 的 header 就行。

看起來這種方式好像很完美?

其實也不是,JWT 有 JWT 的問題:

安全性

因為 JWT 把數據直接 Base64 之后就放在了 header 里,那別人就可以輕易從中拿到狀態數據,比如用戶名等敏感信息,也能根據這個 JWT 去偽造請求。

所以 JWT 要搭配 https 來用,讓別人拿不到 header。

性能

JWT 把狀態數據都保存在了 header 里,每次請求都會帶上,比起只保存個 id 的 cookie 來說,請求的內容變多了,性能也會差一些。

所以 JWT 里也不要保存太多數據。

沒法讓 JWT 失效

session 因為是存在服務端的,那我們就可以隨時讓它失效,而 JWT 不是,因為是保存在客戶端,那我們是沒法手動讓他失效的。

所以 JWT 的過期時間不要設置的太長。

所以說,JWT 的方案雖然解決了很多 session + cookie 的問題,但也不完美。

小結下:

JWT 的方案是把狀態數據保存在 header 里,每次請求需要手動攜帶,沒有 session + cookie 方案的 CSRF、分布式、跨域的問題,但是也有安全性、性能、沒法控制等問題。

說了這么多,還是寫下代碼心里更踏實:

Nest.js 實現兩種方案

我們用 Nest.js 實現下兩種方案吧,不能光紙上談兵。

首先用 @nest/cli 快速創建一個 Nest.js 項目。

npx nest new status

會生成 module、controller、service 的基礎代碼:

我們先實現 session + cookie 的方式:

session + cookie

Nest.js 的底層是 express,它只是額外提供了一些架構的劃分,所以還是 session 實現還是用的 express 的方案:

安裝 express-session 和它的 ts 類型定義:

npm install express-session @types/express-session

然后在入口模塊里啟用它:

指定個加密 cookie 用的密碼就行。

然后在 controller 里就可以注入 session 對象了:

我在 session 里放了個 count 的變量,每次訪問加一,然后 body 返回這個 count。

這樣就可以判斷 http 請求是否有了狀態。

我們來測試下:

可以看到每次請求返回的數據都不同,而且返回了一個 cookie 是 connect.sid,這個就是對應 session 的 id。

因為 cookie 在請求的時候會自動帶上,就可以實現請求的標識,給 http 請求加上狀態。

session + cookie 的方式用起來還是很簡單的,我們再來看下 jwt 的方式:

jwt

jwt 需要引入 @nestjs/jwt 這個包,然后在入口 Module 里引入 JwtModule:

引入的時候指定密碼,也就是用來加到 jwt 里的鹽,也可以指定 token 過期時間。

因為我們引入了 JwtModule,那就可以在 Controller 里依賴注入了:

聲明對 JwtService 的依賴,Nest.js 就會自動注入對應的對象。

然后定義個 controller 方法,通過 Resonse 對象來設置 authorization 的 header:

用 jwtService 生成一個 token,記錄 count,然后放到 header 里返回,同時也放在 body 里。

后面的請求就是取出這個 header,拿到其中的數據,然后 +1 之后再放回去:

這樣也實現了給 http 添加狀態的需求,不過是把數據保存在了 header 里。

我們通過 postman 測試下:

第一次請求會返回一個 authorization 的 header,body 是 1:

把這個 header 手動添加到請求 header 里,再次請求:

body 變成 2 了,同時也返回了一個新的 authorization 的 header。

把這個新的 authorization 放到請求 header 里再次請求:

body 變成 3 了,同時也返回了一個新的 authorization 的 header。

有同學問,我不用新的 header,還是用上次的 header 會怎么樣:

那樣會報錯:

jwt 生成一次只能用一次,這個一次性也是它的一個特點。

這樣,我們就分別用 Nest.js 分別實現了 session + cookie 和 jwt 兩種保存 http 狀態的方式。

代碼上傳到了 github:https://github.com/QuarkGluonPlasma/nestjs-exercize。

總結

http 是無狀態的,也就是請求和請求之間沒有關聯,但我們很多功能的實現是需要保存狀態的。

給 http 添加狀態有兩種方式:

session + cookie:把狀態數據保存到服務端,session id 放到 cookie 里返回,這樣每次請求會帶上 cookie ,通過 id 來查找到對應的 session。這種方案有 CSRF、分布式 session、跨域的問題。

jwt:把狀態保存在 json 格式的 token 里,放到 header 中,需要手動帶上,沒有 cookie + session 的那些問題,但是也有安全性、性能、沒法控制和使用一次就失效的問題。

上面這兩種方案都不是完美的,但那些問題也都有解決方案。

軟件領域很多情況下都是這樣的,某種方案都解決了一些問題,但也相應的帶來了一些新的問題。沒有銀彈,還是要熟悉它們的特點,根據不同的需求靈活選用。

責任編輯:姜華 來源: 神光的編程秘籍
相關推薦

2011-03-03 10:26:04

Pureftpd

2021-05-27 10:57:01

TCP定時器網絡協議

2009-06-25 13:43:00

Buffalo AJA

2010-10-21 16:24:18

sql server升

2023-03-29 13:06:36

2010-08-06 09:38:11

Flex讀取XML

2010-09-07 11:09:59

2023-08-24 08:02:19

冪等性API請求

2010-07-27 15:03:37

Flex ArrayC

2011-03-23 11:22:14

oracle dbli

2010-07-14 10:30:26

Perl多線程

2024-09-20 11:32:28

.NET內存管理

2010-05-10 18:19:00

負載平衡技術

2010-08-03 13:27:04

FlexBuilder

2011-04-02 09:48:38

深拷貝

2016-11-07 09:02:02

Malloc內存syscall

2024-02-04 09:24:45

MyBatisSQL語句Spring

2021-12-08 10:47:35

RabbitMQ 實現延遲

2010-07-15 14:38:55

Perl eval函數

2009-09-08 15:22:20

Spring依賴注入
點贊
收藏

51CTO技術棧公眾號

黄色网页在线播放| 久久久久久久久久91| a日韩av网址| 久久精品夜色噜噜亚洲aⅴ| 国产精品 欧美在线| 俄罗斯毛片基地| 涩爱av色老久久精品偷偷鲁| 精品久久久在线观看| 色999五月色| av资源免费看| 麻豆久久婷婷| 久久国产精品网站| 欧洲熟妇的性久久久久久| 久久人体大尺度| 亚洲精品第一国产综合野| 精品视频一区二区| 国产精品视频在线观看免费| 国产日韩欧美一区| 另类视频在线观看| 亚洲精品视频久久久| 97久久精品一区二区三区的观看方式| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜免费福利视频在线观看| 六月婷婷中文字幕| 日本vs亚洲vs韩国一区三区二区| 欧美人与性动交| 91视频免费观看网站| 韩国三级大全久久网站| 色综合激情久久| www.18av.com| av网站无病毒在线| 91色视频在线| 99九九视频| 在线播放精品视频| 日韩精选在线| 欧美日韩电影在线| 97在线免费公开视频| 亚洲av成人无码久久精品老人 | 777久久久精品一区二区三区| 日本在线播放| 久久久精品欧美丰满| 国产精品大全| 亚洲天堂中文网| 日韩在线a电影| 欧美与黑人午夜性猛交久久久| 久久久久久国产精品视频| 国产精品久久占久久| 欧美日韩中文字幕精品| 欧美在线观看成人| 91福利在线尤物| 亚洲一区中文日韩| 久久精品日产第一区二区三区乱码 | 一区二区三区黄色片| 亚洲免费影视| 欧美一二三视频| 精品美女久久久久| 亚洲激情午夜| 性欧美办公室18xxxxhd| 久久久久亚洲av成人片| 欧美1区3d| 欧美成年人视频网站欧美| 国产97免费视频| 亚洲天天综合| 欧美成人精品一区| 欧美精品久久久久性色| 欧美日本一区二区视频在线观看| 久久在精品线影院精品国产| 免费在线观看一级片| 午夜精品免费| 欧美精品videosex性欧美| 精品少妇一二三区| 国产精品入口| 国产成人在线一区| 最新国产中文字幕| 六月婷婷色综合| 亚洲在线免费视频| 免费av一级片| 久久综合久久99| 日韩亚洲一区在线播放| 99久久精品日本一区二区免费| 久久精品久久精品| 亚洲a级在线播放观看| 精品久久久久久亚洲综合网站| 国产日产亚洲系列最新| 亚洲调教一区| 在线精品高清中文字幕| 成人免费视频入口| 欧美不卡一区| 97视频国产在线| 天天综合久久综合| 国产综合成人久久大片91| 97人人做人人人难人人做| 欧美一区二区在线观看视频| 久久欧美一区二区| 亚洲三区在线| 亚洲精品无码久久久| 日韩中文字幕麻豆| 95av在线视频| 天天干免费视频| 国产精品美女久久久久久| 四虎精品欧美一区二区免费| caoporn-草棚在线视频最| 日本大香伊一区二区三区| 亚洲黄色片免费| 粉嫩av一区二区| 亚洲最新中文字幕| 精品无码免费视频| 美美哒免费高清在线观看视频一区二区 | 欧美一区二区三区在线看| 久久久久久久穴| 欧美日韩高清| 国产成人在线视频网址| 久久成人在线视频| 精品欧美一区二区三区免费观看 | 日韩欧美中字| 久久频这里精品99香蕉| 丰满人妻一区二区三区四区| 国产91色综合久久免费分享| 日日噜噜噜噜夜夜爽亚洲精品| 最新国产在线拍揄自揄视频| 久久综合色播五月| 99热一区二区三区| 亚洲www啪成人一区二区| 欧美成人精品福利| 成人做爰视频网站| 久久在线91| 国产在线一区二区三区播放| 亚洲国产剧情在线观看| 国产婷婷一区二区| 欧美视频在线播放一区| 亚洲精品v亚洲精品v日韩精品| 51精品国自产在线| 久久美女免费视频| 精品国产一区二区三区小蝌蚪| 欧美精品www| jlzzjlzzjlzz亚洲人| 国产精品天天看| 欧美成人黑人猛交| 男人日女人网站| 亚洲欧美在线人成swag| 亚洲无限av看| 日韩欧美在线观看免费| 99re成人精品视频| 妞干网视频在线观看| 电影中文字幕一区二区| 日韩一级免费观看| 人与动物性xxxx| 丝袜美腿一区二区三区| 久久久影院一区二区三区 | 韩国女主播一区二区三区| 欧美成人免费全部观看天天性色| 国产又大又黄又爽| 亚洲欧美中日韩| 伊人精品久久久久7777| 日韩不卡免费高清视频| 在线成人免费观看| 天堂网av2018| 久久福利资源站| 精品一区二区成人免费视频| 国产精品一区二区精品| 插插插亚洲综合网| 成人黄色免费视频| 亚洲国产精品一区二区久久恐怖片| 麻豆精品国产传媒| 伊人久久亚洲美女图片| 狠狠色综合色区| 中文字幕资源网在线观看免费| 亚洲男人天堂久| 伊人网中文字幕| 亚洲婷婷国产精品电影人久久| 中文字幕avav| 最新亚洲视频| 日本一区二区三区免费观看| 久草在线青青草| 色吊一区二区三区| 影音先锋男人看片资源| 国产麻豆日韩欧美久久| 中文一区二区在线观看| 国产免费黄色小视频| 国产精品最新| 久久夜色精品国产亚洲aⅴ| 国产精品一区二区av白丝下载 | 国产女片a归国片aa| 成人av网在线| 中文字幕欧美人妻精品一区| 91av精品| 久久久久久久免费| 成人在线网站| 欧美日韩国产123| 欧美成熟毛茸茸| 亚洲精品视频在线观看免费 | 成人福利电影| 亚洲欧美中文在线视频| 亚洲最新av网站| 亚洲一区二区在线免费观看视频| 美国黄色一级毛片| 极品少妇xxxx偷拍精品少妇| 欧洲精品一区二区三区久久| 国产99亚洲| 91九色视频在线观看| 不卡av播放| 久久艹在线视频| 欧美大片aaa| 欧美成人三级电影在线| 国产亚洲久一区二区| 一二三四区精品视频| 少妇精品无码一区二区免费视频| 激情综合激情| 久久资源亚洲| 日韩一区网站| 国产精品美乳在线观看| av中文在线资源库| 久久精品亚洲热| 高清性色生活片在线观看| 精品国产伦一区二区三区观看体验| 一级一级黄色片| 午夜视频在线观看一区| 国产精品99久久久久久成人| 91天堂素人约啪| 亚洲 自拍 另类 欧美 丝袜| 日韩国产欧美在线观看| 自拍日韩亚洲一区在线| 亚洲五月综合| 亚洲视频小说| 免费观看久久av| 韩国成人av| 视频国产精品| 91精品视频在线免费观看| 日韩毛片免费观看| 一本一道久久a久久精品蜜桃 | 69国产精品成人在线播放| 99久久一区二区| 欧美午夜一区二区| 亚洲欧美偷拍一区| 午夜婷婷国产麻豆精品| 久久国产精品二区| 一区二区三区日韩欧美| 日韩欧美综合视频| 亚洲色图视频网站| 男人的午夜天堂| 欧美国产成人精品| 一级黄色录像毛片| 国产亚洲精品aa| www.狠狠爱| 久久久久国产免费免费| 欧美亚一区二区三区| 91亚洲永久精品| www国产视频| 久久尤物视频| 久章草在线视频| 亚洲一区久久| 毛片av免费在线观看| 三级欧美在线一区| 欧美激情精品久久久久久小说| 久久精品导航| 国产精品无码一本二本三本色| 久久中文在线| 国产又大又黄又粗的视频| 青青草97国产精品免费观看无弹窗版| 日本成人中文字幕在线| 秋霞电影网一区二区| 亚洲天堂国产视频| 国内成人自拍视频| gogo亚洲国模私拍人体| 成人丝袜高跟foot| 色老头一区二区三区在线观看| 国产精品视频一区在线观看| 狠狠久久五月精品中文字幕| 一二三区免费视频| 欧美亚洲国产怡红院影院| 亚洲图片视频小说| 91麻豆精品国产91久久久更新时间| 国产免费一区二区三区最新不卡| 欧美一区二区三区视频| 欧美一区,二区| 日韩精品福利网站| 亚洲天堂男人网| 在线播放国产精品二区一二区四区| 国产一区二区自拍视频| 日韩女优av电影在线观看| 婷婷在线免费观看| 亚洲小视频在线| 蜜芽在线免费观看| 欧美精品福利在线| 亚洲十八**毛片| 国产精品一区二区电影| 欧洲大片精品免费永久看nba| 精品久久久久久一区二区里番| 国产伦精品一区二区三区视频 | 国产精品久久久久久久av电影| 国产精品xxx| 亚洲一区国产精品| 日韩三区视频| 亚洲一区二区三区四区中文| 国产真实久久| 国产视频一区二区三区在线播放 | 国产日韩视频一区| 久久久美女毛片| 神马午夜精品91| 日韩欧美在线视频免费观看| 国产情侣自拍小视频| 日韩毛片在线观看| 成人直播在线| 国产成人精品在线观看| 久久精品九色| 日本在线观看不卡| 99精品视频99| 亚洲人成网站在线| 亚洲AV无码成人精品区东京热 | 韩国av永久免费| 在线观看久久久久久| 成人性生交大片免费看网站| 国产精品日韩在线一区| 鲁大师精品99久久久| 手机在线视频你懂的| 美女尤物久久精品| 在线播放av网址| 国产精品国产三级国产普通话蜜臀| 亚洲精品国产精品乱码| 日韩午夜在线播放| 一区二区高清不卡| 日韩女优人人人人射在线视频| 制服丝袜在线播放| 国产国产精品人在线视| 久久91在线| 男人添女人下部视频免费| 蜜乳av一区二区| 亚洲午夜福利在线观看| 亚洲高清免费观看| 亚洲精品综合网| 欧美大胆在线视频| 婷婷久久免费视频| 国产精品主播视频| heyzo久久| 北条麻妃在线视频| 久久香蕉国产线看观看99| 日韩免费不卡视频| 精品国产乱码久久久久久1区2区 | 日韩精品网站| av视屏在线播放| 国产午夜精品一区二区三区四区| 日韩黄色一级大片| 日韩黄色高清视频| 成人bbav| 久久青青草原| 亚洲女同同性videoxma| 国产精品久久不卡| 精品女同一区二区三区在线播放| 风流老熟女一区二区三区| 欧美激情第三页| 成人知道污网站| 欧美一级视频在线播放| 成人h精品动漫一区二区三区| 日韩激情一区二区三区| 日韩欧美aaa| 你懂得网站在线| 国产成人久久精品| 精品国精品国产自在久国产应用| 黄色国产小视频| 国产精品久久久久久久久免费桃花 | 亚洲第一香蕉网| 国产高清一级毛片在线不卡| 日韩在线视频网站| 国产精品国产三级在线观看| 中国一级黄色录像| 国产成人在线观看| 黄色片视频网站| 亚洲欧美日韩国产成人| jizzjizz少妇亚洲水多| 中文字幕av日韩精品| 国产精品一卡二卡在线观看| 久久国产精品波多野结衣| 日韩精品在线免费观看| 深夜视频一区二区| av电影一区二区三区| 成人av网在线| 免费av中文字幕| 久久久精品网站| 豆花视频一区二区| 国产成人无码一二三区视频| 国产精品毛片大码女人| 精品人妻午夜一区二区三区四区| 国外成人性视频| 神马久久一区二区三区| 中文字幕久久av| 午夜精品久久久久久久| 福利小视频在线观看| 92国产精品视频| 免费看的黄色欧美网站| 强制高潮抽搐sm调教高h| 精品国产一区二区亚洲人成毛片| 欧美xo影院| 屁屁影院ccyy国产第一页| 久久你懂得1024| 中文字幕一区二区三区人妻四季| 欧美精品免费看| 精品国产日韩欧美| aaaaa黄色片| 欧美性受xxxx黑人xyx| 久久电影网站|