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

Cors跨域(三):Access-Control-Allow-Origin多域名?

安全 應(yīng)用安全
本文將實(shí)戰(zhàn)Cors解決跨域問(wèn)題中最為重要的響應(yīng)頭:Access-Control-Allow-Origin。它用于服務(wù)端告訴瀏覽器允許共享本資源的Origin,那么如何允許多個(gè)域名呢?

[[406060]]

前言

你好,我是YourBatman。

本系列前兩篇文章用文字把跨域、Cors相關(guān)概念介紹完了,從下開(kāi)始進(jìn)入實(shí)戰(zhàn)階段。畢竟學(xué)也學(xué)了,看也看了,是騾子是馬該拉出來(lái)遛一遛。

本文將實(shí)戰(zhàn)Cors解決跨域問(wèn)題中最為重要的響應(yīng)頭:Access-Control-Allow-Origin。它用于服務(wù)端告訴瀏覽器允許共享本資源的Origin,那么如何允許多個(gè)域名呢?

本文提綱

版本約定

  • JDK:8
  • Servlet:4.x
  • tomcat:9.x

正文

正如前文所述,響應(yīng)頭Access-Control-Allow-Origin 用于在跨域請(qǐng)求中告訴瀏覽器服務(wù)端允許的Origin,瀏覽器拿到這個(gè)頭的值跟自己的Origin對(duì)比決定是否正常接收響應(yīng)。

從命名上就有所察覺(jué):Access-Control-Allow-Origin值是單數(shù),否則就會(huì)叫Access-Control-Allow-Origins?

(瀏覽器)官方對(duì)此響應(yīng)頭的可能值有明確規(guī)定:

也就說(shuō)此響應(yīng)頭的取值只可能是上圖中的3選1。

null值的作用:讓data:和file:打開(kāi)的頁(yè)面也能夠共享跨域資源(因?yàn)檫@種協(xié)議下有Origin頭,但是值是null,比較特殊)?

那么問(wèn)題來(lái)了,倘若服務(wù)端本資源需要允許多個(gè)域來(lái)共享,又該如何指定Access-Control-Allow-Origin 的值呢?這是一個(gè)開(kāi)發(fā)中常見(jiàn)的場(chǎng)景,本文將繼續(xù)深入討論和介紹最佳實(shí)踐。

環(huán)境準(zhǔn)備

因?yàn)橐獦?gòu)造不同的Origin來(lái)發(fā)送http://localhost:8080/multiple_origins_cors這個(gè)跨域請(qǐng)求,因此需要不同的域名,所以我需要在本機(jī)模擬出來(lái)。我的實(shí)踐方案為:

用本機(jī)Tomcat作為靜態(tài)頁(yè)面服務(wù)器,托管html頁(yè)面

修改本機(jī)host文件,達(dá)到支持多域名的目的

1. Tomcat托管靜態(tài)html頁(yè)面

之前我都是用的IDEA內(nèi)建的靜態(tài)服務(wù)器來(lái)托管html頁(yè)面,但由于它不支持綁定多域名而無(wú)法模擬出本例需要的效果,因此我就不得不開(kāi)辟新的方法嘍。

做Java開(kāi)發(fā)的小伙伴對(duì)Tomcat再熟悉不過(guò),但由于Spring Boot的普及它屏蔽了開(kāi)發(fā)者對(duì)Web Server的感知,所以可能雖然天天用但其實(shí)鮮有接觸,特別是standalone的Tomcat服務(wù)器。

所以我這里稍微介紹下我的做法(關(guān)鍵步驟)。去到Tomcat的目錄,僅需修改它的server.xml文件即可:

步驟一:修改端口為9090(因?yàn)槲襍erver端服務(wù)器也是Tomcat,端口為8080,避免沖突)

步驟二:在host里托管Context上下文,關(guān)聯(lián)到你的html文件夾(Tips:這只是托管的方式之一)

說(shuō)明:docBase表示靜態(tài)頁(yè)面所在的文件夾(絕對(duì)路徑),path表示對(duì)應(yīng)的url訪問(wèn)路徑?

完成后,啟動(dòng)tomcat sh startup.sh后即可通過(guò)http://localhost:9090/static/xxx.html訪問(wèn)到靜態(tài)頁(yè)面啦。

2. 修改Host支持多域名

這個(gè)就比較簡(jiǎn)單了,無(wú)需多言,粘張圖就懂。

這樣通過(guò)如圖中的3個(gè)域名就都可對(duì)頁(yè)面進(jìn)行正常訪問(wèn)啦

3. 書(shū)寫(xiě)前端html頁(yè)面

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title>多Origin響應(yīng)CORS跨域請(qǐng)求</title> 
  6.     <!--導(dǎo)入Jquery--> 
  7.     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> 
  8. </head> 
  9. <body> 
  10. <button id="btn">多Origin響應(yīng)CORS跨域請(qǐng)求</button> 
  11. <div id="content"></div> 
  12.  
  13. <script> 
  14.     $("#btn").click(function () { 
  15.         // 跨域請(qǐng)求 
  16.         $.get("http://localhost:8080/multiple_origins_cors"function (result) { 
  17.             $("#content").append(result).append("<br/>"); 
  18.         }); 
  19.     }); 
  20. </script> 
  21. </body> 
  22. </html> 

 

 

 

 

 

 

4. 書(shū)寫(xiě)服務(wù)端代碼

  1. /** 
  2.  * 多Origin響應(yīng) 
  3.  * 
  4.  * @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a> 
  5.  * @site https://yourbatman.cn 
  6.  * @date 2021/6/9 10:36 
  7.  * @since 0.0.1 
  8.  */ 
  9. @Slf4j 
  10. @WebServlet(urlPatterns = "/multiple_origins_cors"
  11. public class MultipleOriginsCorsServlet extends HttpServlet { 
  12.  
  13.     @Override 
  14.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  15.         String requestURI = req.getRequestURI(); 
  16.         String method = req.getMethod(); 
  17.         String originHeader = req.getHeader("Origin"); 
  18.         log.info("收到請(qǐng)求:{},方法:{}, Origin頭:{}", requestURI, method, originHeader); 
  19.  
  20.         resp.getWriter().write("hello multiple origins cors..."); 
  21.         setCrosHeader(resp); 
  22.     } 
  23.  
  24.     /** 
  25.      * 寫(xiě)跨域響應(yīng)頭 
  26.      */ 
  27.     private void setCrosHeader(HttpServletResponse resp) { 
  28.         resp.setHeader("Access-Control-Allow-Origin""http://localhost:9090"); 
  29.     } 

至此,環(huán)境已經(jīng)準(zhǔn)備好。此頁(yè)面有三個(gè)地址/域名可以訪問(wèn)到(不包括localhost),也就是Origin可能有這三種情況:

  • http://foo.baidu.com:9090
  • http://bar.baidu.com:9090
  • http://static.yourbatman.cn:9090

Access-Control-Allow-Origin支持多域名

現(xiàn)實(shí)場(chǎng)景中,服務(wù)端資源如若是完全公開(kāi)的,那么可以使用Access-Control-Allow-Origin: *。但在現(xiàn)實(shí)場(chǎng)景中大多數(shù)資源并非完全public的,因此需要指定Access-Control-Allow-Origin具體值來(lái)達(dá)到控制的目的。

那么,如何讓Access-Control-Allow-Origin支持多域名呢?下面示范一下常見(jiàn)的錯(cuò)誤方式,最后給出最佳實(shí)踐。

要實(shí)現(xiàn)Access-Control-Allow-Origin允許多個(gè)域名共享資源,按照“常規(guī)思維”,有好些個(gè)使用誤區(qū),這里我嘗試羅列出來(lái)。

誤區(qū)一:Access-Control-Allow-Origin值使用,分隔

,分隔在程序員的世界很常見(jiàn),很多時(shí)候可表示多值。那在這里是否好使呢?試一試

  1. private void setCrosHeader(HttpServletResponse resp) { 
  2.     resp.setHeader("Access-Control-Allow-Origin""http://foo.baidu.com:9090,http://bar.baidu.com:9090"); 

點(diǎn)擊按鈕,發(fā)送跨域請(qǐng)求,失敗詳情:

可以看到不僅沒(méi)實(shí)現(xiàn)多值,連foo.baidu.com:9090這個(gè)域名都不能訪問(wèn)啦~

誤區(qū)二:寫(xiě)多個(gè)Access-Control-Allow-Origin響應(yīng)頭

這種方式也是“正常思維”之一。試一下:

  1. private void setCrosHeader(HttpServletResponse resp) { 
  2.     resp.addHeader("Access-Control-Allow-Origin""http://foo.baidu.com:9090"); 
  3.     resp.addHeader("Access-Control-Allow-Origin""http://bar.baidu.com:9090"); 

小細(xì)節(jié):這里將setHeader改用為addHeader(xxx)了喲,你懂的?

點(diǎn)擊按鈕,發(fā)送跨域請(qǐng)求,失敗詳情:

多說(shuō)一句:在實(shí)際開(kāi)發(fā)中這種出現(xiàn)兩個(gè)Access-Control-Allow-Origin響應(yīng)頭的case還是比較常見(jiàn)的。根據(jù)經(jīng)驗(yàn)一般原因是:Web Server設(shè)置了一個(gè)頭,而Nginx(或者Gateway網(wǎng)關(guān))又添加了一個(gè)頭(一般值為*)。

強(qiáng)調(diào):瀏覽器只要收到兩個(gè)Access-Control-Allow-Origin響應(yīng)頭,不論值是什么(即使一模一樣),都不會(huì)接受。

誤區(qū)三:Access-Control-Allow-Origin值使用正則

當(dāng)需要允許的多域名符合某個(gè)規(guī)律時(shí),會(huì)想到使用簡(jiǎn)單的正則去匹配,那么是否支持呢?試一下:

  1. private void setCrosHeader(HttpServletResponse resp) { 
  2.     resp.addHeader("Access-Control-Allow-Origin""http://*.baidu.com:9090"); 

點(diǎn)擊按鈕,發(fā)送跨域請(qǐng)求,失敗詳情:

強(qiáng)調(diào):瀏覽器拿Access-Control-Allow-Origin的值和Origin進(jìn)行匹配的規(guī)則是完全匹配,通配符只認(rèn)*。

誤區(qū)四:Access-Control-Allow-Origin值使用*通配符

這是一個(gè)特殊的使用“誤區(qū)”:它能正常work,但并不能“很好的work”。試一下

  1. private void setCrosHeader(HttpServletResponse resp) { 
  2.     resp.addHeader("Access-Control-Allow-Origin""*"); 

點(diǎn)擊按鈕,發(fā)送跨域請(qǐng)求,正常響應(yīng):

 

既然能夠正常響應(yīng)完成跨域請(qǐng)求,為何我會(huì)認(rèn)為這么處理屬于誤區(qū)呢?

其原因主要為:使用*通配符屬于暴力配置,表示任意源都可以訪問(wèn)此資源,對(duì)大部分場(chǎng)景來(lái)講這違背了安全原則,存在安全漏洞,所以實(shí)際生產(chǎn)中并不建議這么做(除非是public資源)。

使用*通配符的漏洞

為何對(duì)使用*樂(lè)此不疲?答:因?yàn)楹?jiǎn)單,似乎能夠解決“所有”跨域問(wèn)題,且能一勞永逸。正所謂天下哪有那么多歲月靜好,黑客們?cè)谀谴来烙麆?dòng)。

在與瀏覽器“溝通”過(guò)程中,不恰當(dāng)?shù)氖褂肅ors會(huì)造成一些可能的漏洞,比如最常見(jiàn)的便是當(dāng)允許多個(gè)域名跨域請(qǐng)求時(shí),很多同學(xué)為了方便就將Access-Control-Allow-Origin寫(xiě)為*,或者在Ng上直接賦值為$http_origin(效果完全同*)。這種暴力配置是很危險(xiǎn)的,相當(dāng)于任意網(wǎng)站都可以直接訪問(wèn)你的資源,那就失去跨域限制的意義了。

這么配置的話,在最基本的滲透測(cè)試中都是過(guò)不去的。如若你這么做且公司有安全部門(mén),沒(méi)過(guò)多久應(yīng)該就會(huì)有人找你聊天喝茶了。

別問(wèn)我為什么會(huì)知道,因?yàn)槲揖驮话踩块T(mén)同事招呼過(guò)???

最佳實(shí)踐

來(lái)了,期待的最佳實(shí)踐它來(lái)了。允許多域名跨域是如此常見(jiàn)的場(chǎng)景,本文當(dāng)然要給出最佳實(shí)踐(供以參考)。

既然瀏覽器是精確的完整匹配這個(gè)規(guī)則我們無(wú)法修改,那只有唯一的一個(gè)辦法:在服務(wù)端給Access-Control-Allow-Origin賦值之前做邏輯:

若允許跨域,將請(qǐng)求的Origin賦值給它

若不允許跨域,不返回此頭(或者給賦值一個(gè)默認(rèn)值也是可以的)

有了理論支撐,用代碼實(shí)現(xiàn)乃分分鐘之事:

  1. private List<String> ALLOW_ORIGINS = new ArrayList<>(); 
  2. @Override 
  3. public void init() throws ServletException { 
  4.     ALLOW_ORIGINS.add("http://localhost:9090"); 
  5.     ALLOW_ORIGINS.add("http://foo.baidu.com:9090"); 
  6.     ALLOW_ORIGINS.add("http://bar.baidu.com:9090"); 
  7.     ALLOW_ORIGINS.add("http://static.yourbatman.cn:9090"); 
  8.  
  9. private void setCrosHeader(String reqOrigin, HttpServletResponse resp) { 
  10.     if (reqOrigin == null) { 
  11.         return
  12.     } 
  13.     // 匹配算法:equals 
  14.     if (ALLOW_ORIGINS.contains(reqOrigin)) { 
  15.         resp.addHeader("Access-Control-Allow-Origin", reqOrigin); 
  16.     } 

如果是Ng,可以這么寫(xiě)(簡(jiǎn)單舉例而已):

  1. location / {   
  2.   
  3.  // 枚舉列出允許跨域的domian(可以使用NG支持的匹配方式) 
  4.  set $cors_origin ""
  5.     if ($http_origin ~* "^http://foo.baidu.com$") { 
  6.             set $cors_origin $http_origin; 
  7.     } 
  8.     if ($http_origin ~* "^http://bar.baidu.com$") { 
  9.             set $cors_origin $http_origin; 
  10.     } 
  11.     add_header Access-Control-Allow-Origin $cors_origin; 

既然接管了Access-Control-Allow-Origin賦值邏輯。腦洞更大一點(diǎn),這可極具個(gè)性化和擴(kuò)展性:

  • ALLOW_ORIGINS:不需要再hard code,可以支持外部化配置,甚至打通配置中心
  • 匹配算法:可以支持完全匹配、前綴匹配、正則匹配,設(shè)置更復(fù)雜的匹配邏輯都可
  • ...

說(shuō)了這么多,這些個(gè)性化擴(kuò)展性都需要代碼去實(shí)現(xiàn),那到底有沒(méi)有現(xiàn)成可用的最佳實(shí)踐代碼呢?

當(dāng)然,有!!!

作為Java開(kāi)發(fā)者yyds:Spring框架。怎能沒(méi)考慮到這么常見(jiàn)的Cors跨域場(chǎng)景呢?它提供的org.springframework.web.filter.CorsFilter就是真實(shí)可用的最佳實(shí)踐,可以拿來(lái)就用或者作為參考和學(xué)習(xí)。

說(shuō)明:關(guān)于Spring/Spring Boot場(chǎng)景下對(duì)Cors跨域問(wèn)題的解決方案以及原理分析,本系列已安排在下下篇詳細(xì)剖析?

補(bǔ)充:Vary: Origin解決緩存問(wèn)題

在文章最后想補(bǔ)充一個(gè)“小知識(shí)點(diǎn)”:有關(guān)于瀏覽器緩存和Vary的問(wèn)題。

關(guān)于Vary,平時(shí)比較細(xì)心的同學(xué)應(yīng)該會(huì)比較有印象。Vary中文含義:變化。它是一個(gè)HTTP響應(yīng)頭,決定了對(duì)于下一個(gè)請(qǐng)求,應(yīng)該使用緩存還是向源服務(wù)器請(qǐng)求一個(gè)新的Response,和內(nèi)容協(xié)商(你知道的,內(nèi)容協(xié)商也屬于我的一個(gè)技術(shù)專欄)有關(guān)。現(xiàn)在的瀏覽器都支持這個(gè)響應(yīng)頭~

標(biāo)準(zhǔn)語(yǔ)法是:

  1. ary: * // 告訴瀏覽器,所有的響應(yīng)頭都是變得所以都不緩存 
  2. Vary: <header-name>, <header-name>, ... // 告訴瀏覽器,有些頭都是變的就不要緩存了 

說(shuō)了這么多,它和本文有何關(guān)系呢?

由于這和瀏覽器緩存(cache-control)背景知識(shí)強(qiáng)關(guān)聯(lián),并非本文重點(diǎn)無(wú)需詳細(xì)展開(kāi)。因此這里只是提示你:如若出現(xiàn)同一份URL(相同的Referer),不同的Origin(如foo.baidu.com和bar.baidu.com)請(qǐng)求時(shí)一個(gè)能行一個(gè)不能行,那很有可能就是瀏覽器緩存導(dǎo)致,這時(shí)就可以增加一個(gè)響應(yīng)頭Vary: Origin來(lái)解決。

?說(shuō)明:這里假設(shè)服務(wù)端對(duì)Access-Control-Allow-Origin的賦值邏輯一切正常,也就是說(shuō)服務(wù)端沒(méi)有問(wèn)題?

總結(jié)

本文圍繞Access-Control-Allow-Origin這個(gè)響應(yīng)頭,從幾大誤區(qū)到最佳實(shí)踐,希望能夠幫助你加深對(duì)它的理解。當(dāng)然最重要的是:盡量不要一碰到Access-Control-Allow-Origin就只會(huì)賦值*啦,多些思考多些安全性考慮,畢竟安全部門(mén)的茶水最好還是不要喝。

 

責(zé)任編輯:武曉燕 來(lái)源: BAT的烏托邦
相關(guān)推薦

2021-06-15 07:32:59

Cookie和Sess實(shí)現(xiàn)跨域

2019-04-10 10:32:16

CORSNginx反向代理

2014-08-19 10:36:02

AngularCORS

2021-06-25 09:04:39

Cors跨域JSONP vs CO

2022-04-29 09:11:14

CORS瀏覽器

2021-06-10 18:11:02

Cors跨域Web開(kāi)發(fā)Cors

2023-12-20 14:42:59

2013-11-27 10:23:23

2020-08-31 19:20:33

瀏覽器CORS跨域

2019-03-13 14:15:25

CORS跨域資源前端

2024-01-31 07:55:52

2016-11-01 21:51:03

phpjavascript

2020-08-13 07:04:45

跨域CORS瀏覽器

2021-04-27 15:20:41

人工智能機(jī)器學(xué)習(xí)技術(shù)

2020-12-18 09:36:01

JSONP跨域面試官

2024-05-20 09:28:44

Spring客戶端瀏覽器

2022-03-21 07:35:34

處理方式跨域

2023-11-20 08:02:49

2021-05-06 20:51:52

跨域http協(xié)議

2017-06-06 14:13:16

點(diǎn)贊
收藏

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

91久久久一线二线三线品牌| 国产视频久久久久久久| 特级毛片在线免费观看| 超碰在线人人干| 久久一区二区三区超碰国产精品| 中文字幕国产精品久久| 亚洲国产精品字幕| 精品日韩电影| 一二三四区在线| 91久久视频| 日韩在线视频国产| 国产不卡一二三| 亚洲精品一区av| 日韩欧美在线网址| 国产乱人伦精品一区二区三区| 视频二区在线| 国产麻豆精品久久一二三| 欧美孕妇性xx| 久久精品国产亚洲AV无码麻豆| 成人一级毛片| 日韩高清a**址| 亚洲a级黄色片| 亚洲www免费| 午夜电影久久久| 福利在线小视频| 午夜免费视频在线国产| 91天堂素人约啪| 波多野结衣久草一区| 伊人免费在线观看高清版| 国产精品五区| 午夜欧美大片免费观看| 欧美黑人一级片| 久久综合成人| 国产亚洲一区二区在线| 免费a v网站| 综合伊人久久| 日韩欧美在线一区二区三区| 女人高潮一级片| 欧美黄色成人| 欧美私人免费视频| 热久久精品国产| 日韩av福利| 色婷婷激情综合| 成年网站在线免费观看| 狠狠操一区二区三区| 亚洲第一久久影院| 中文精品无码中文字幕无码专区| 黄网站在线播放| 亚洲视频在线观看一区| 伊人天天久久大香线蕉av色| 在线观看麻豆| 国产精品久99| 91麻豆视频网站| 国产精品无av码在线观看| 黄色污污网站在线观看| 久久精品三级| 国产精品成人在线| 一级特黄aaa大片在线观看| 精品一区二区在线播放| 成人免费观看a| 国产女人高潮毛片| 国产成人精品一区二| 俄罗斯精品一区二区三区| wwwxxxx国产| 成人精品国产福利| 久久婷婷人人澡人人喊人人爽| 天天干天天草天天射| 久久毛片高清国产| 亚洲视频小说| 亚洲性图自拍| 午夜视频在线观看一区二区| 高清在线观看免费| 韩国成人在线| 91精品国产综合久久久久久| 精品人妻一区二区乱码| 欧美激情15p| 在线国产精品视频| 日本一级二级视频| 亚洲最黄网站| 国产精品极品美女粉嫩高清在线| 在线观看日韩一区二区| 国产宾馆实践打屁股91| 日韩成人dvd| 欧美一区二区网站| 韩国黄色一级片| 四虎影视一区二区| 国产精品免费99久久久| 色妞久久福利网| 青娱乐国产在线| 亚洲精品乱码| 国产精品高潮呻吟久久av黑人| 一二区在线观看| www.一区二区| 亚洲综合av一区| 1区2区3区在线| 亚洲国产高清一区| 久久久久免费观看| 欧日韩一区二区三区| 美女黄视频在线观看| 亚洲成人免费电影| 15—17女人毛片| av成人男女| 这里只有视频精品| 亚欧视频在线观看| 九色porny丨国产精品| 国产在线视频欧美一区二区三区| xxxxx日韩| 午夜成人在线视频| 97人人模人人爽人人澡| 国产精品探花在线观看| 欧美激情一二区| 中文字幕无码乱码人妻日韩精品| 成人高清视频免费观看| 欧美性视频在线播放| 色戒汤唯在线| 精品国产髙清在线看国产毛片| 一级特黄曰皮片视频| 一本色道精品久久一区二区三区| 91久久久久久| av在线之家电影网站| 婷婷六月综合网| 一卡二卡三卡四卡五卡| 日韩精品首页| 国产精品国语对白| 国产小视频福利在线| 午夜影院在线观看欧美| 国产成人精品一区二区在线小狼| 久久视频国产| 国产精品久久久久久亚洲调教| 视频一区二区三区在线看免费看| 亚洲国产一区二区视频| 中文字幕在线观看91| 99久久.com| 国产拍精品一二三| 春暖花开成人亚洲区| 欧美午夜丰满在线18影院| 性农村xxxxx小树林| 午夜久久福利| 3d精品h动漫啪啪一区二区| 免费大片在线观看www| 欧美日韩视频不卡| 国产又黄又粗的视频| 三级影片在线观看欧美日韩一区二区| 精品一区二区三区国产| 97在线视频免费观看完整版| 欧美一区影院| 69堂国产成人免费视频| 日本人亚洲人jjzzjjz| 日韩精品久久久久久| 日韩av电影在线观看| 成人看片在线观看| 自拍视频国产精品| 一级特黄aaaaaa大片| 综合av第一页| 国产ts在线观看| 亚洲欧洲另类| 欧美日韩无遮挡| 亚洲国产尤物| 久久亚洲一区二区三区四区五区高| 国产一区二区在线不卡| 亚洲欧美日韩国产成人精品影院| 亚洲欧美激情一区二区三区| 很黄很黄激情成人| 裸模一区二区三区免费| 另类激情视频| 丝袜亚洲另类欧美重口| 国产视频在线观看视频| 亚洲午夜在线电影| 亚洲欧美视频在线播放| 日韩高清不卡一区二区三区| 一区二区三区四区不卡| 91综合精品国产丝袜长腿久久| 久久久亚洲影院你懂的| 日韩av成人| 欧美日韩国产免费一区二区 | xxxx.国产| 国产色综合久久| 污污网站在线观看视频| 亚洲性图久久| 视频在线精品一区| 深夜福利一区| 欧美一级电影久久| 日本中文字幕伦在线观看| 欧美大片在线观看一区二区| 国产免费av一区二区| 国产精品每日更新在线播放网址| 波多野结衣免费观看| 在线亚洲成人| 一区二区三区四区| 偷拍一区二区| 亚洲一区二区免费在线| 小视频免费在线观看| 久久精品精品电影网| 天堂av资源网| 在线不卡欧美精品一区二区三区| 日韩黄色一级大片| 中文字幕一区二区三区在线播放| 北京富婆泄欲对白| www.狠狠干| 91蝌蚪porny成人天涯| 孩娇小videos精品| 一本久道久久综合狠狠爱| 亚洲视频导航| 免费视频一区三区| 丁香婷婷久久久综合精品国产 | 欧美日韩另类视频| www.5588.com毛片| 国产人久久人人人人爽| 中国极品少妇xxxx| 国产乱码字幕精品高清av| 日韩精品一区二区三区不卡 | 国外成人免费在线播放| 日韩美女网站| 亚洲欧美精品伊人久久| www.色婷婷.com| 欧美精品日日鲁夜夜添| www.久久视频| 欧美日韩裸体免费视频| 久久久国产精品人人片| 中文字幕永久在线不卡| 日本一区二区视频在线播放| 91在线观看视频| 亚洲午夜久久久久久久久| 精品一区二区国语对白| 91看片在线免费观看| 久久看片网站| 男人日女人bb视频| 亚洲激情成人| 国产毛片久久久久久国产毛片| 99久久www免费| 亚洲日本理论电影| 成人vr资源| 日韩精品一区二区三区外面| 欧美人妖在线| 欧美极品jizzhd欧美| 亚洲精品推荐| 你懂的视频在线一区二区| 麻豆一区一区三区四区| 国产美女精品久久久| 亚洲电影一区| 国产精品12| 粉嫩的18在线观看极品精品| 91免费看网站| 中文字幕一区二区三区中文字幕| 国产成人精品免费视频大全最热 | 欧美成人一区二区在线| 色狼人综合干| 欧美日韩电影一区二区三区| 国产91精品对白在线播放| 欧美日韩精品免费看| 国产一区网站| 亚洲欧洲在线一区| 久久精品亚洲人成影院| 亚洲一级二级在线| 亚洲调教欧美在线| 久久久久国产精品免费免费搜索| 色噜噜日韩精品欧美一区二区| 久久免费国产精品| 久久久久久久久福利| 一区二区中文字幕在线| 国产一区二区三区在线视频观看| 一区二区三区四区国产精品| 久久高清无码视频| 天天色天天操综合| 无码免费一区二区三区| 欧美日本视频在线| 黄色av免费观看| 亚洲免费av片| 生活片a∨在线观看| 欧美第一黄色网| 超碰在线97国产| 热re91久久精品国99热蜜臀| 欧美激情福利| 好吊色欧美一区二区三区四区| 奇米狠狠一区二区三区| 亚洲综合激情五月| 日韩亚洲在线| 在线观看岛国av| 成人激情校园春色| 国产综合精品久久久久成人av| 一区二区三区在线播| 国产精品视频一区在线观看| 欧美精品久久99久久在免费线| 免费观看黄色一级视频| 亚洲天堂av女优| 牛牛电影国产一区二区| 国产99久久精品一区二区永久免费 | 欧美综合一区第一页| 黄页免费欧美| 国产亚洲一区在线播放| 成人av动漫在线观看| 国产乱子伦精品无码专区| 日本午夜精品视频在线观看 | 国产肉丝袜一区二区| 欧美成人一区二区三区高清| 91国偷自产一区二区开放时间 | 国产成人福利夜色影视| 97se视频在线观看| 国产亚洲欧美日韩在线观看一区二区 | 色网站在线免费观看| 欧美成人免费小视频| 向日葵视频成人app网址| 成人欧美视频在线| 欧美h版在线| 久久久久久久久久久免费视频| 国产东北露脸精品视频| 国产1区2区在线观看| 黄色成人在线播放| 国产av无码专区亚洲av| 国产亚洲精品高潮| 国产精品蜜芽在线观看| 成人午夜在线观看| 禁果av一区二区三区| 国产深夜男女无套内射| 国产伦精一区二区三区| 天天摸日日摸狠狠添| 欧美性精品220| 欧美 日韩 综合| 色综合久久中文字幕综合网小说| 午夜av成人| 欧美动漫一区二区| 国产欧美短视频| 91九色蝌蚪porny| 理论片一区二区在线| 日韩在线视频免费观看高清中文| 成年人在线网站| 91成人免费在线观看| 久久一区二区三区喷水| 色一情一乱一伦一区二区三区日本| 不卡欧美aaaaa| 久久久久久久蜜桃| 日韩午夜中文字幕| 国产三级在线播放| 国产欧美精品一区二区三区-老狼| 中文字幕中文字幕精品| 日韩中文字幕三区| 91在线播放网址| 毛片在线免费视频| 亚洲精品资源美女情侣酒店| 国产剧情av在线播放| 精品国产乱码久久久久| 99综合精品| 强伦人妻一区二区三区| 欧美视频中文字幕在线| 你懂的视频在线| 国产精品69久久久久| 欧美色图一区| 久久人人爽av| 综合av第一页| 亚洲精品综合网| 国产综合在线看| 小嫩嫩12欧美| av免费网站观看| 中文字幕在线播放不卡一区| 国产av精国产传媒| 97视频在线观看视频免费视频| 西瓜成人精品人成网站| 久草综合在线观看| 中文字幕中文乱码欧美一区二区| 91国产免费视频| 欧美疯狂做受xxxx高潮| 露出调教综合另类| 亚洲男人天堂色| 亚洲丝袜另类动漫二区| 黄色aaa大片| 国产第一区电影| 天天久久综合| 亚洲午夜久久久久久久久| 一本一道综合狠狠老| 欧美激情黑人| 欧美日韩另类在线| 天堂网成人在线| 中文字幕日韩一区| 亚洲欧美强伦一区二区| 2019中文字幕免费视频| 日韩av免费大片| 好吊操视频这里只有精品| 欧美日韩亚洲视频| 日本在线视频观看| 国产伦精品一区二区三区免费视频 | 国产一区二区三区日韩 | 99综合在线| 男女全黄做爰文章| 亚洲国产成人在线播放| 色天使综合视频| 日韩一级片免费视频| 国产午夜精品福利| 精品美女www爽爽爽视频| 日本一区二区在线播放| 91精品成人| 国产一二三四五区| 日韩一区二区三区精品视频| 国产精品专区免费| 国产精品一二三在线观看| 久久久三级国产网站| 亚洲av综合色区无码一二三区| 国产精品久久久久久久久久ktv | 欧美一级视频一区二区| 91精品一区二区三区综合| 右手影院亚洲欧美|