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

SpringBoot跨域問題八種解決方案!

開發(fā) 前端
跨域問題是瀏覽器為了保護(hù)用戶的信息安全,實(shí)施了同源策略(Same-Origin Policy),即只允許頁面請(qǐng)求同源(相同協(xié)議、域名和端口)的資源,當(dāng) JavaScript 發(fā)起的請(qǐng)求跨越了同源策略,即請(qǐng)求的目標(biāo)與當(dāng)前頁面的域名、端口、協(xié)議不一致時(shí),瀏覽器會(huì)阻止請(qǐng)求的發(fā)送或接收。解決跨域問題方案跨域問題可以從以下方面解決:應(yīng)用層面解決:例如 Spring Boot 項(xiàng)目中解決跨域問題。反向代理解決

跨域問題是瀏覽器為了保護(hù)用戶的信息安全,實(shí)施了同源策略(Same-Origin Policy),即只允許頁面請(qǐng)求同源(相同協(xié)議、域名和端口)的資源,當(dāng) JavaScript 發(fā)起的請(qǐng)求跨越了同源策略,即請(qǐng)求的目標(biāo)與當(dāng)前頁面的域名、端口、協(xié)議不一致時(shí),瀏覽器會(huì)阻止請(qǐng)求的發(fā)送或接收。

解決跨域問題方案

跨域問題可以從以下方面解決:

  1. 應(yīng)用層面解決:例如 Spring Boot 項(xiàng)目中解決跨域問題。
  2. 反向代理解決:例如 Nginx 中解決跨域問題。
  3. 網(wǎng)關(guān)中解決:例如 Spring Cloud Gateway 中解決跨域問題。

而這 3 類解決方案,總共包含了 8 種解決方案,一起來看。

1.Spring Boot 中解決跨域

在 Spring Boot 中跨域問題有以下 5 種解決方案:

  1. 使用 @CrossOrigin 注解實(shí)現(xiàn)跨域【局域類跨域】
  2. 通過配置文件實(shí)現(xiàn)跨域【全局跨域】
  3. 通過 CorsFilter 對(duì)象實(shí)現(xiàn)跨域【全局跨域】
  4. 通過 Response 對(duì)象實(shí)現(xiàn)跨域【局域方法跨域】
  5. 通過實(shí)現(xiàn) ResponseBodyAdvice 實(shí)現(xiàn)跨域【全局跨域】

接下來詳細(xì)來看。

1.1 通過注解跨域

使用 @CrossOrigin 注解可以輕松的實(shí)現(xiàn)跨域,此注解既可以修飾類,也可以修飾方法。當(dāng)修飾類時(shí),表示此類中的所有接口都可以跨域;當(dāng)修飾方法時(shí),表示此方法可以跨域,它的實(shí)現(xiàn)如下:

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
@RestController
@CrossOrigin(origins = "*")
public class TestController {
    @RequestMapping("/test")
    public HashMap<String, Object> test() {
        return new HashMap<String, Object>() {{
            put("state", 200);
            put("data", "success");
            put("msg", "");
        }};
    }
}

以上代碼的執(zhí)行結(jié)果如下圖所示:

圖片圖片

從上圖中可以看出,前端項(xiàng)目訪問另一個(gè)后端項(xiàng)目成功了,也就說明它解決了跨域問題。

優(yōu)缺點(diǎn)分析

此方式雖然雖然實(shí)現(xiàn)(跨域)比較簡單,但細(xì)心的朋友也能發(fā)現(xiàn),使用此方式只能實(shí)現(xiàn)局部跨域,當(dāng)一個(gè)項(xiàng)目中存在多個(gè)類的話,使用此方式就會(huì)比較麻煩(需要給所有類上都添加此注解)。

1.2 通過配置文件跨域

通過設(shè)置配置文件的方式就可以實(shí)現(xiàn)全局跨域了,它的實(shí)現(xiàn)步驟如下:

  • 創(chuàng)建一個(gè)新配置文件。
  • 添加 @Configuration 注解,實(shí)現(xiàn) WebMvcConfigurer 接口。
  • 重寫 addCorsMappings 方法,設(shè)置允許跨域的代碼。

具體實(shí)現(xiàn)代碼如下:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration // 一定不要忽略此注解
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 所有接口
        .allowCredentials(true) // 是否發(fā)送 Cookie
        .allowedOriginPatterns("*") // 支持域
        .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"}) // 支持方法
        .allowedHeaders("*")
        .exposedHeaders("*");
    }
}

1.3 通過 CorsFilter 跨域

此實(shí)現(xiàn)方式和上一種實(shí)現(xiàn)方式類似,它也可以實(shí)現(xiàn)全局跨域,它的具體實(shí)現(xiàn)代碼如下:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration // 一定不能忽略此注解
public class MyCorsFilter {
    @Bean
    public CorsFilter corsFilter() {
        // 1.創(chuàng)建 CORS 配置對(duì)象
        CorsConfiguration config = new CorsConfiguration();
        // 支持域
        config.addAllowedOriginPattern("*");
        // 是否發(fā)送 Cookie
        config.setAllowCredentials(true);
        // 支持請(qǐng)求方式
        config.addAllowedMethod("*");
        // 允許的原始請(qǐng)求頭部信息
        config.addAllowedHeader("*");
        // 暴露的頭部信息
        config.addExposedHeader("*");
        // 2.添加地址映射
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**", config);
        // 3.返回 CorsFilter 對(duì)象
        return new CorsFilter(corsConfigurationSource);
    }
}

1.4 通過 Response 跨域

此方式是解決跨域問題最原始的方式,但它可以支持任意的 Spring Boot 版本(早期的 Spring Boot 版本也是支持的)。但此方式也是局部跨域,它應(yīng)用的范圍最小,設(shè)置的是方法級(jí)別的跨域,它的具體實(shí)現(xiàn)代碼如下:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
@RestController
public class TestController {
    @RequestMapping("/test")
    public HashMap<String, Object> test(HttpServletResponse response) {
        // 設(shè)置跨域
        response.setHeader("Access-Control-Allow-Origin", "*");
        return new HashMap<String, Object>() {{
            put("state", 200);
            put("data", "success");
            put("msg", "");
        }};
    }
}

1.5 通過 ResponseBodyAdvice 跨域

通過重寫 ResponseBodyAdvice 接口中的 beforeBodyWrite(返回之前重寫)方法,我們可以對(duì)所有的接口進(jìn)行跨域設(shè)置,它的具體實(shí)現(xiàn)代碼如下:

import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {
    /**
     * 內(nèi)容是否需要重寫(通過此方法可以選擇性部分控制器和方法進(jìn)行重寫)
     * 返回 true 表示重寫
     */
    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    }
    /**
     * 方法返回之前調(diào)用此方法
     */
    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                  Class selectedConverterType, ServerHttpRequest request,
                                  ServerHttpResponse response) {
        // 設(shè)置跨域
        response.getHeaders().set("Access-Control-Allow-Origin", "*");
        return body;
    }
}

此實(shí)現(xiàn)方式也是全局跨域,它對(duì)整個(gè)項(xiàng)目中的所有接口有效。

2.Nginx 中解決跨域

在 Nginx 服務(wù)器的配置文件中添加以下代碼:

server {
    listen       80;
    server_name  your_domain.com;
    location /api {
        # 允許跨域請(qǐng)求的域名,* 表示允許所有域名訪問
        add_header 'Access-Control-Allow-Origin' '*';

        # 允許跨域請(qǐng)求的方法
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

        # 允許跨域請(qǐng)求的自定義 Header
        add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';

        # 允許跨域請(qǐng)求的 Credential
        add_header 'Access-Control-Allow-Credentials' 'true';

        # 預(yù)檢請(qǐng)求的存活時(shí)間,即 Options 請(qǐng)求的響應(yīng)緩存時(shí)間
        add_header 'Access-Control-Max-Age' 3600;

        # 處理預(yù)檢請(qǐng)求
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
    # 其他配置...
}

上述示例中,location /api 代表配置針對(duì) /api 路徑的請(qǐng)求進(jìn)行跨域設(shè)置。可以根據(jù)具體需要修改 location 的值和其他相關(guān)參數(shù)。配置中的 add_header 指令用于設(shè)置響應(yīng)頭部,常用的響應(yīng)頭部包括以下這些:

  • Access-Control-Allow-Origin:用于指定允許跨域的域名,可以設(shè)置為 * 表示允許所有域名訪問。
  • Access-Control-Allow-Methods:用于指定允許的跨域請(qǐng)求的方法,例如 GET、POST、OPTIONS 等。
  • Access-Control-Allow-Headers:用于指定允許的跨域請(qǐng)求的自定義 Header。
  • Access-Control-Allow-Credentials:用于指定是否允許跨域請(qǐng)求發(fā)送和接收 Cookie。
  • Access-Control-Max-Age:用于設(shè)置預(yù)檢請(qǐng)求(OPTIONS 請(qǐng)求)的響應(yīng)緩存時(shí)間。

3.網(wǎng)關(guān)中解決跨域

Spring Cloud Gateway 中解決跨域問題可以通過以下兩種方式實(shí)現(xiàn):

  1. 通過在配置文件中配置跨域?qū)崿F(xiàn)。
  2. 通過在框架中添加 CorsWebFilter 來解決跨域問題。

3.1 配置文件中設(shè)置跨域

在 application.yml 或 application.properties 中添加以下配置:

spring:
  cloud:
    gateway:
      globalcors:
        corsConfigurations:
          '[/**]': # 這里的'/**'表示對(duì)所有路由生效,可以根據(jù)需要調(diào)整為特定路徑
            allowedOrigins: "*" # 允許所有的源地址,也可以指定具體的域名
            allowedMethods: # 允許的 HTTP 方法類型
              - GET
              - POST
              - PUT
              - DELETE
              - OPTIONS
            allowedHeaders: "*" # 允許所有的請(qǐng)求頭,也可以指定具體的請(qǐng)求頭
            allowCredentials: true # 是否允許攜帶憑證(cookies)
            maxAge: 3600 # CORS預(yù)檢請(qǐng)求的有效期(秒)

其中:

  • allowedOrigins: 設(shè)置允許訪問的來源域名列表,"*" 表示允許任何源。
  • allowedMethods: 指定哪些HTTP方法可以被用于跨域請(qǐng)求。
  • allowedHeaders: 客戶端發(fā)送的請(qǐng)求頭列表,"*" 表示允許任何請(qǐng)求頭。
  • allowCredentials: 當(dāng)設(shè)為 true 時(shí),允許瀏覽器在發(fā)起跨域請(qǐng)求時(shí)攜帶認(rèn)證信息(例如 cookies)。
  • maxAge: 預(yù)檢請(qǐng)求的結(jié)果可以在客戶端緩存的最大時(shí)間。

通過這樣的配置,Spring Cloud Gateway 網(wǎng)關(guān)將自動(dòng)處理所有經(jīng)過它的跨域請(qǐng)求,并添加相應(yīng)的響應(yīng)頭,從而允許前端應(yīng)用執(zhí)行跨域請(qǐng)求。

3.2 添加 CorsWebFilter 來解決跨域問題

在 Spring-Framework 從 5.3 版本之前,使用以下代碼可以讓 Spring Cloud Gateway 網(wǎng)關(guān)允許跨域:

@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsWebFilter corsWebFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 這里僅為了說明問題,配置為放行所有域名,生產(chǎn)環(huán)境請(qǐng)對(duì)此進(jìn)行修改
        config.addAllowedOrigin("*");
        // 放行的請(qǐng)求頭
        config.addAllowedHeader("*");
        // 放行的請(qǐng)求類型,有 GET, POST, PUT, DELETE, OPTIONS
        config.addAllowedMethod("*"); 
        // 暴露頭部信息
        config.addExposedHeader("*"); 
        // 是否允許發(fā)送 Cookie
        config.setAllowCredentials(true); 
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}

而 Spring-Framework 5.3 版本之后,關(guān)于 CORS 跨域配置類 CorsConfiguration 中將 addAllowedOrigin 方法名修改為 addAllowedOriginPattern,因此配置了變成了以下這樣:

@Configuration
public class GlobalCorsConfig {

    @Bean
    public CorsWebFilter corsWebFilter() {
        CorsConfiguration config = new CorsConfiguration();
        // 這里僅為了說明問題,配置為放行所有域名,生產(chǎn)環(huán)境請(qǐng)對(duì)此進(jìn)行修改
        config.addAllowedOriginPattern("*");
        // 放行的請(qǐng)求頭
        config.addAllowedHeader("*");
        // 放行的請(qǐng)求類型,有 GET, POST, PUT, DELETE, OPTIONS
        config.addAllowedMethod("*"); 
        // 暴露頭部信息
        config.addExposedHeader("*"); 
        // 是否允許發(fā)送 Cookie
        config.setAllowCredentials(true); 
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", config);
        return new CorsWebFilter(source);
    }
}

小結(jié)

跨域問題可以在網(wǎng)關(guān)層、反向代理層或應(yīng)用層來解決,而它們的使用優(yōu)先級(jí)是:網(wǎng)關(guān)層 > 代理層 >  應(yīng)用層。因?yàn)樵娇壳案采w范圍就越大,解決跨域問題就越容易。


責(zé)任編輯:武曉燕 來源: 磊哥和Java
相關(guān)推薦

2024-05-22 19:10:18

跨域Web開發(fā)

2019-11-11 17:34:16

前端開發(fā)技術(shù)

2024-01-25 11:04:51

跨域問題反向代理層網(wǎng)關(guān)層

2010-02-24 10:55:01

WCF跨域訪問

2010-07-30 12:40:00

Flex跨域訪問

2018-01-26 08:39:03

2023-05-06 15:32:04

2018-12-12 15:50:13

2024-10-29 16:41:24

SpringBoot跨域Java

2023-11-17 09:38:21

2024-05-20 09:28:44

Spring客戶端瀏覽器

2012-05-09 10:08:41

跨機(jī)房

2022-03-01 09:31:06

JWTSession跨域

2021-06-25 09:04:39

Cors跨域JSONP vs CO

2024-03-26 12:08:53

分布式事務(wù)存儲(chǔ)

2017-08-20 12:49:59

瀏覽器跨域服務(wù)器

2024-04-29 08:58:44

2025-02-24 16:00:00

SpringBoot定時(shí)任務(wù)開發(fā)

2017-12-19 17:54:31

前端ajax跨域cors

2021-06-06 13:05:15

前端跨域CORS
點(diǎn)贊
收藏

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

亚洲欧洲日本国产| 欧美在线视频免费播放| 青娱乐精品在线| a视频在线观看免费| 国产专区综合网| 欧美大片在线看| 亚洲综合自拍网| 91在线亚洲| 亚洲激情自拍视频| 精品一区二区三区日本| 久久国产乱子伦精品| 999视频精品| 亚洲第一免费播放区| 国产情侣av自拍| 黄色片免费在线观看| 久久99精品一区二区三区| 精品中文字幕在线观看| 国产精品300页| 亚洲综合视频| 欧美日韩性视频| 中文字幕综合在线观看| 色资源在线观看| 国产在线看一区| 欧美中文字幕在线播放| 精品无码一区二区三区蜜臀| 天天躁日日躁狠狠躁欧美巨大小说| 欧美中文字幕一二三区视频| 野外做受又硬又粗又大视频√| 黄色免费在线播放| 成人激情校园春色| 国产精品亚洲片夜色在线| 国产精品1000| 91精品91| 中文字幕在线观看亚洲| 精品无码国产一区二区三区51安| 99精品女人在线观看免费视频| 精品福利免费观看| 欧美一级中文字幕| 95在线视频| 91免费看视频| 国产一区免费在线| 精品国产999久久久免费| 久久国产精品99国产| 欧美高清视频在线| 亚洲а∨天堂久久精品2021| 欧美18xxxx| 日韩精品在线网站| 国产日韩欧美久久| 欧美一区国产| 亚洲成精国产精品女| 综合一区中文字幕| av免费观看一区二区| 91丨porny丨在线| 国产精品乱码视频| www.我爱av| 国产美女一区二区三区| 国产精品亚洲精品| 一本一道人人妻人人妻αv | 日本在线成人一区二区| 欧美香蕉爽爽人人爽| 成人在线视频首页| eeuss一区二区三区| 精品久久久久久亚洲综合网站| 免费一级片91| 国产精品视频一区二区高潮| 亚洲大尺度在线观看| 性伦欧美刺激片在线观看| 欧美激情精品久久久| 五月天丁香激情| 欧美久久一级| 色在人av网站天堂精品| 国产aaaaaaaaa| 日韩av免费大片| 精品精品国产国产自在线| 久久一级免费视频| 91影院成人| 免费91在线视频| 青青草精品在线视频| 重囗味另类老妇506070| 久久精品视频网站| 91porn在线视频| 精品成人在线| 欧美亚洲视频在线观看| 精品国产一区二区三区四| 99精品免费视频| 日本一本a高清免费不卡| 91video| 日韩av电影免费观看高清完整版| 国产精品高潮视频| 99久久精品国产色欲| 成人sese在线| 日本不卡一区| 污污视频在线| 亚洲精选一二三| 精品国产av无码一区二区三区| 国产伦子伦对白在线播放观看| 欧美日韩亚洲视频一区| 欧美a在线视频| 日韩一区二区三区免费视频| 欧美久久一二区| 久久无码专区国产精品s| 欧美有码在线| 色诱女教师一区二区三区| 黄色一级视频免费观看| 国产日韩1区| 国产欧美日韩免费| 亚洲av永久纯肉无码精品动漫| 成人h动漫精品| 午夜老司机精品| 直接在线观看的三级网址| 天天色 色综合| 久草福利视频在线| 久久影院一区二区三区| 日韩精品一区二区三区第95| 三级黄色片在线观看| 国内精品美女在线观看| 国产suv精品一区二区三区88区| 97超碰人人模人人人爽人人爱| 9久草视频在线视频精品| 欧美日韩精品综合| 色图在线观看| 欧美影片第一页| 三级视频网站在线观看| 国产永久精品大片wwwapp| 欧美激情videos| 在线免费观看av片| 91丨porny丨国产| 日本成人在线不卡| 欧美一级做a| 亚洲欧美日韩在线高清直播| www青青草原| 可以免费看不卡的av网站| 亚洲综合中文字幕在线| 第三区美女视频在线| 亚洲午夜精品一区二区三区他趣| 久久婷五月综合| 亚洲传媒在线| 国精产品一区一区三区有限在线| 欧美a视频在线观看| 成人精品视频一区二区三区 | 国产九色91回来了| 91伊人久久大香线蕉| 天天综合五月天| 成人黄色图片网站| 亚洲男子天堂网| 免费网站观看www在线观| 久久电影网站中文字幕 | 三级a在线观看| 丝袜连裤袜欧美激情日韩| 九色精品美女在线| 国产又色又爽又黄又免费| 国产欧美日韩视频在线观看| 欧美成人精品欧美一级乱| 国内毛片久久| 韩剧1988免费观看全集| www.亚洲天堂.com| 中文字幕日韩一区| 天天摸天天舔天天操| 欧美激情777| 国产美女精品免费电影| 成人精品一区二区三区免费 | 日韩欧美一级二级| 日韩激情综合网| 久久66热偷产精品| 一卡二卡3卡四卡高清精品视频| 成人mm视频在线观看| 亚洲视频在线免费观看| 国产一区二区视频免费| 国产亚洲精品7777| www.99av.com| 99久久99热这里只有精品| 成人写真福利网| av网站大全在线| 欧美乱妇15p| 久久人妻无码aⅴ毛片a片app| 精品一区二区三区视频| 超薄肉色丝袜足j调教99| 欧美三级一区| 久久人人爽人人| 香蕉久久一区二区三区| 欧美性xxxxxxxxx| 山东少妇露脸刺激对白在线| 美女视频黄久久| 一本色道久久88亚洲精品综合| 日韩成人在线一区| 欧美富婆性猛交| 欧美男男同志| 欧美自拍偷拍一区| 男的操女的网站| caoporn国产一区二区| 国产人妻777人伦精品hd| 婷婷综合成人| 国产拍精品一二三| 久久一卡二卡| 亚洲欧美成人网| 91精东传媒理伦片在线观看| 亚洲欧美一区二区久久| 国产精品入口麻豆| 日韩高清一区二区| 精品一区二区成人免费视频 | 高清无码一区二区在线观看吞精| 精品视频高潮| 国产精品久久久久久亚洲影视| а√资源新版在线天堂| 亚洲精品电影网| 好吊色在线视频| 洋洋成人永久网站入口| 日韩中文字幕电影| 国产麻豆9l精品三级站| 91九色在线观看视频| japanese国产精品| 99porn视频在线| 激情亚洲影院在线观看| 欧美激情xxxx性bbbb| www.国产精品.com| 亚洲成人免费在线视频| 无码任你躁久久久久久久| 亚洲精品网站在线观看| 欧美 日韩 国产 成人 在线观看 | 久久久久久久爱| 国产福利在线看| 精品蜜桃在线看| 亚洲天天综合网| 精品久久久久久中文字幕| 国产午夜视频在线| 亚洲精品中文在线观看| www.99re6| 中文天堂在线一区| 日韩av片在线| 国产日韩影视精品| 女女互磨互喷水高潮les呻吟| 91欧美一区二区| 四季av综合网站| 99久久伊人久久99| 国产白袜脚足j棉袜在线观看| 粉嫩av一区二区三区| 午夜视频在线免费看| 国产精品一区二区久久精品爱涩| 男女男精品视频站| 麻豆极品一区二区三区| 在线免费视频a| 久久成人综合网| 国产成人在线综合| 国产一区视频在线看| 91丝袜超薄交口足| 国产成人h网站| 色悠悠在线视频| va亚洲va日韩不卡在线观看| 亚洲 欧美 日韩在线| 99久久精品免费| 在线观看福利片| 国产无一区二区| 极品尤物一区二区| 国产精品久久久久精k8| 婷婷社区五月天| 亚洲小说欧美激情另类| 日韩欧美不卡视频| 色哟哟日韩精品| 中文字幕欧美人妻精品| 欧美精品在线观看一区二区| 国产美女www爽爽爽视频| 日韩精品在线一区二区| 五月婷婷久久久| 这里只有精品视频在线| 国产精品剧情一区二区在线观看 | 少妇影院在线观看| 性做久久久久久免费观看欧美| 日韩精品一区二区三| 日韩人体视频一二区| 亚洲一区二区天堂| 欧美videossexotv100| 日本一区高清| 日韩在线免费视频观看| 91白丝在线| 国产精品美女主播| 中文久久电影小说| 日韩av不卡播放| 中文av一区| 日本三级免费观看| 极品少妇一区二区三区精品视频| 野战少妇38p| 国产免费成人在线视频| 国产女人被狂躁到高潮小说| 日韩欧美在线一区| 国产理论视频在线观看| 亚洲精品视频久久| h片在线播放| 国产成人97精品免费看片| 精品999日本久久久影院| 欧美激情论坛| 欧美久久视频| wwww.国产| av电影天堂一区二区在线观看| 少妇太紧太爽又黄又硬又爽小说| 亚洲福利视频导航| 亚洲天堂中文字幕在线| 亚洲精品国精品久久99热 | 欧美自拍视频在线| 爱情电影网av一区二区| 精品一区二区三区自拍图片区| 9191国语精品高清在线| 激情综合网俺也去| 91在线视频免费观看| 国产激情无码一区二区三区| 色88888久久久久久影院野外| xxxx18国产| 少妇激情综合网| 日本精品不卡| 国产欧美欧洲| 中文精品久久| 182午夜在线观看| 国产亚洲欧美一级| 免费看日韩毛片| 欧美大胆人体bbbb| 一区二区三区视频在线观看视频| 欧美亚洲国产精品| 大伊香蕉精品在线品播放| 五月天在线免费视频| 免费观看成人av| 亚洲精品一区二区三区影院忠贞| 欧美日韩在线第一页| 粉嫩av一区二区夜夜嗨| 久久av在线播放| 日韩福利影视| 亚洲制服中文| 激情欧美日韩一区二区| 亚洲精品视频网址| 在线看一区二区| 天堂а√在线8种子蜜桃视频| 欧美高清视频一区二区| 日本一区二区三区播放| 国产精品久久成人免费观看| 久久精品国产免费看久久精品| 欧美波霸videosex极品| 91国产成人在线| 91porn在线观看| 国产精品久久久久久久久久久久久 | 三级成人在线视频| 国产免费一区二区三区网站免费| 激情成人中文字幕| 欧美日韩影视| 国产黑人绿帽在线第一区| 欧美理论视频| 艹b视频在线观看| 国产精品传媒视频| 国产农村老头老太视频| 久久国产精品久久久| 91精品国产自产精品男人的天堂| 国产女主播自拍| 91视频观看视频| 国产亚洲欧美在线精品| 伊人久久男人天堂| 亚洲男人在线| 黄色一级片黄色| 26uuu成人网一区二区三区| 天堂网中文字幕| 中文字幕欧美日韩va免费视频| 日日夜夜亚洲| 成人av在线播放观看| 99视频在线观看一区三区| 亚洲欧美一区二区三区在线观看| 亚洲视频免费一区| avtt久久| 日本国产在线播放| 国产欧美精品一区二区色综合| 国产精品一区二区人人爽| 久久久久久综合网天天| 无码日韩精品一区二区免费| 日韩亚洲在线视频| 综合久久久久综合| 日日夜夜精品免费| 国产精品1234| 欧美在线不卡| 中文字幕狠狠干| 777久久久精品| 国产欧洲在线| 曰韩不卡视频| 97se狠狠狠综合亚洲狠狠| 中文字幕免费播放| 久久人人爽人人| 欧美国产一级| 最近日本中文字幕| 在线播放欧美女士性生活| 成年网站在线视频网站| 亚洲一二区在线| 成人午夜在线播放| 在线观看免费视频一区| 欧美乱妇高清无乱码| 国产精品嫩模av在线| 99热这里只有精品2| 色综合久久中文字幕综合网| 伊人春色在线观看| 日本在线观看不卡| 丁香激情综合五月| 中文字幕在线播放av| 68精品久久久久久欧美| 中文精品久久| 99精品全国免费观看| 日韩精品亚洲元码| 在线视频亚洲欧美中文|