久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Spring Cloud Gateway 獲取請求體(Request Body)的多種方法

瀏覽:66日期:2023-07-27 09:10:14

一、直接在全局攔截器中獲取,偽代碼如下

private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){ Flux<DataBuffer> body = serverHttpRequest.getBody(); AtomicReference<String> bodyRef = new AtomicReference<>(); body.subscribe(buffer -> { CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer()); DataBufferUtils.release(buffer); bodyRef.set(charBuffer.toString()); }); return bodyRef.get(); }

存在的缺陷:其他攔截器無法再通過該方式獲取請求體(因為請求體已被消費),并且會拋出異常

Only one connection receive subscriber allowed.Caused by: java.lang.IllegalStateException: Only one connection receive subscriber allowed.

異常原因:實際上spring-cloud-gateway反向代理的原理是,首先讀取原請求的數據,然后構造一個新的請求,將原請求的數據封裝到新的請求中,然后再轉發出去。然而我們在他封裝之前讀取了一次request body,而request body只能讀取一次。因此就出現了上面的錯誤。

再者受版本限制

這種方法在spring-boot-starter-parent 2.0.6.RELEASE + Spring Cloud Finchley.SR2 body 中生效,

但是在spring-boot-starter-parent 2.1.0.RELEASE + Spring Cloud Greenwich.M3 body 中不生效,總是為空

二、先在全局過濾器中獲取,然后再把request重新包裝,繼續向下傳遞傳遞

@Override public GatewayFilter apply(NameValueConfig nameValueConfig) { return (exchange, chain) -> { URI uri = exchange.getRequest().getURI(); URI ex = UriComponentsBuilder.fromUri(uri).build(true).toUri(); ServerHttpRequest request = exchange.getRequest().mutate().uri(ex).build(); if('POST'.equalsIgnoreCase(request.getMethodValue())){//判斷是否為POST請求 Flux<DataBuffer> body = request.getBody(); AtomicReference<String> bodyRef = new AtomicReference<>(); body.subscribe(dataBuffer -> { CharBuffer charBuffer = StandardCharsets.UTF_8.decode(dataBuffer.asByteBuffer()); DataBufferUtils.release(dataBuffer); bodyRef.set(charBuffer.toString()); });//讀取request body到緩存 String bodyStr = bodyRef.get();//獲取request body System.out.println(bodyStr);//這里是我們需要做的操作 DataBuffer bodyDataBuffer = stringBuffer(bodyStr); Flux<DataBuffer> bodyFlux = Flux.just(bodyDataBuffer); request = new ServerHttpRequestDecorator(request){ @Override public Flux<DataBuffer> getBody() { return bodyFlux; } };//封裝我們的request } return chain.filter(exchange.mutate().request(request).build()); }; } protected DataBuffer stringBuffer(String value) { byte[] bytes = value.getBytes(StandardCharsets.UTF_8); NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT); DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length); buffer.write(bytes); return buffer; }

該方案的缺陷:request body獲取不完整(因為異步原因),只能獲取1024B的數據。并且請求體超過1024B,會出現響應超慢(因為我是開啟了熔斷)。

三、過濾器加路線定位器

翻查源碼發現ReadBodyPredicateFactory里面緩存了request body的信息,于是在自定義router中配置了ReadBodyPredicateFactory,然后在filter中通過cachedRequestBodyObject緩存字段獲取request body信息。

/** * @description: 獲取POST請求的請求體 * ReadBodyPredicateFactory 發現里面緩存了request body的信息, * 于是在自定義router中配置了ReadBodyPredicateFactory * @modified: */@EnableAutoConfiguration@Configurationpublic class RouteLocatorRequestBoby{ //自定義過濾器 @Resource private ReqTraceFilter reqTraceFilter; @Resource private RibbonLoadBalancerClient ribbonLoadBalancerClient; private static final String SERVICE = '/leap/**'; private static final String HTTP_PREFIX = 'http://'; private static final String COLON = ':'; @Bean public RouteLocator myRoutes(RouteLocatorBuilder builder) { //通過負載均衡獲取服務實例 ServiceInstance instance = ribbonLoadBalancerClient.choose('PLATFORM-SERVICE'); //拼接路徑 StringBuilder forwardAddress = new StringBuilder(HTTP_PREFIX); forwardAddress.append(instance.getHost()) .append(COLON) .append(instance.getPort()); return builder.routes() //攔截請求類型為POST Content-Type application/json application/json;charset=UTF-8 .route(r -> r.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + MediaType.APPLICATION_JSON_UTF8_VALUE).and().method(HttpMethod.POST).and()//獲取緩存中的請求體.readBody(Object.class, readBody -> { return true;}).and().path(SERVICE)//把請求體傳遞給攔截器reqTraceFilter.filters(f -> { f.filter(reqTraceFilter); return f;}).uri(forwardAddress.toString())).build(); } /** * @description: 過濾器,用于獲取請求體,和處理請求體業務,列如記錄日志 * @modified: */@Componentpublic class ReqTraceFilter implements GlobalFilter, GatewayFilter,Ordered { private static final String CONTENT_TYPE = 'Content-Type'; private static final String CONTENT_TYPE_JSON = 'application/json'; //獲取請求路由詳細信息Route route = exchange.getAttribute(GATEWAY_ROUTE_BEAN) private static final String GATEWAY_ROUTE_BEAN = 'org.springframework.cloud.gateway.support.ServerWebExchangeUtils.gatewayRoute'; private static final String CACHE_REQUEST_BODY_OBJECT_KEY = 'cachedRequestBodyObject'; @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); //判斷過濾器是否執行 String requestUrl = RequestUtils.getCurrentRequest(request); if (!RequestUtils.isFilter(requestUrl)) { String bodyStr = ''; String contentType = request.getHeaders().getFirst(CONTENT_TYPE); String method = request.getMethodValue(); //判斷是否為POST請求 if (null != contentType && HttpMethod.POST.name().equalsIgnoreCase(method) && contentType.contains(CONTENT_TYPE_JSON)) { Object cachedBody = exchange.getAttribute(CACHE_REQUEST_BODY_OBJECT_KEY); if(null != cachedBody){ bodyStr = cachedBody.toString(); } } if (HttpMethod.GET.name().equalsIgnoreCase(method)) { bodyStr = request.getQueryParams().toString(); } log.info('請求體內容:{}',bodyStr); } return chain.filter(exchange); } @Override public int getOrder() { return 5; }}

該方案優點:這種解決,一不會帶來重復讀取問題,二不會帶來requestbody取不全問題。三在低版本的Spring Cloud Finchley.SR2也可以運行。

缺點:不支持multipart/form-data(異常415),這個致命。

四、通過org.springframework.cloud.gateway.filter.factory.rewrite包下有個ModifyRequestBodyGatewayFilterFactory,顧名思義,這就是修改 Request Body 的過濾器工廠類。

@Component@Slf4jpublic class ReqTraceFilter implements GlobalFilter, GatewayFilter, Ordered { @Resource private IPlatformFeignClient platformFeignClient; /** * httpheader,traceId的key名稱 */ private static final String REQUESTID = 'traceId'; private static final String CONTENT_TYPE = 'Content-Type'; private static final String CONTENT_TYPE_JSON = 'application/json'; private static final String GATEWAY_ROUTE_BEAN = 'org.springframework.cloud.gateway.support.ServerWebExchangeUtils.gatewayRoute'; @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); //判斷過濾器是否執行 String requestUrl = RequestUtils.getCurrentRequest(request); if (!RequestUtils.isFilter(requestUrl)) { String bodyStr = ''; String contentType = request.getHeaders().getFirst(CONTENT_TYPE); String method = request.getMethodValue(); //判斷是否為POST請求 if (null != contentType && HttpMethod.POST.name().equalsIgnoreCase(method) && contentType.contains(CONTENT_TYPE_JSON)) { ServerRequest serverRequest = new DefaultServerRequest(exchange); List<String> list = new ArrayList<>(); // 讀取請求體 Mono<String> modifiedBody = serverRequest.bodyToMono(String.class) .flatMap(body -> { //記錄請求體日志 final String nId = saveRequestOperLog(exchange, body); //記錄日志id list.add(nId); return Mono.just(body); }); BodyInserter bodyInserter = BodyInserters.fromPublisher(modifiedBody, String.class); HttpHeaders headers = new HttpHeaders(); headers.putAll(exchange.getRequest().getHeaders()); headers.remove(HttpHeaders.CONTENT_LENGTH); CachedBodyOutputMessage outputMessage = new CachedBodyOutputMessage(exchange, headers); return bodyInserter.insert(outputMessage, new BodyInserterContext()) .then(Mono.defer(() -> { ServerHttpRequestDecorator decorator = new ServerHttpRequestDecorator( exchange.getRequest()) {@Overridepublic HttpHeaders getHeaders() { long contentLength = headers.getContentLength(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.putAll(super.getHeaders()); httpHeaders.put(REQUESTID,list); if (contentLength > 0) { httpHeaders.setContentLength(contentLength); } else { httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, 'chunked'); } return httpHeaders;} @Overridepublic Flux<DataBuffer> getBody() { return outputMessage.getBody();} };return chain.filter(exchange.mutate().request(decorator).build()); })); } if (HttpMethod.GET.name().equalsIgnoreCase(method)) { bodyStr = request.getQueryParams().toString(); String nId = saveRequestOperLog(exchange, bodyStr); ServerHttpRequest userInfo = exchange.getRequest().mutate() .header(REQUESTID, nId).build(); return chain.filter(exchange.mutate().request(userInfo).build()); } } return chain.filter(exchange); } /** * 保存請求日志 * * @param exchange * @param requestParameters * @return */ private String saveRequestOperLog(ServerWebExchange exchange, String requestParameters) { log.debug('接口請求參數:{}', requestParameters); ServerHttpRequest request = exchange.getRequest(); String ip = Objects.requireNonNull(request.getRemoteAddress()).getAddress().getHostAddress(); SaveOperLogVO vo = new SaveOperLogVO(); vo.setIp(ip); vo.setReqUrl(RequestUtils.getCurrentRequest(request)); vo.setReqMethod(request.getMethodValue()); vo.setRequestParameters(requestParameters); Route route = exchange.getAttribute(GATEWAY_ROUTE_BEAN); //是否配置路由 if (route != null) { vo.setSubsystem(route.getId()); } ResEntity<String> res = platformFeignClient.saveOperLog(vo); log.debug('當前請求ID返回的數據:{}', res); return res.getData(); } @Override public int getOrder() { return 5; }}

該方案:完美解決以上所有問題

參考文檔:https://www.codercto.com/a/52970.html

到此這篇關于Spring Cloud Gateway 獲取請求體(Request Body)的多種方法的文章就介紹到這了,更多相關Spring Cloud Gateway 獲取請求體內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 日本在线观看视频一区 | 男女www视频 | 99热这里有精品 | 蜜桃av一区二区三区 | 亚洲精品自拍视频 | 成人免费视频视频在线观看 免费 | 日本中文字幕一区 | 成人在线免费观看视频 | 在线精品国产 | 国产精品久久久久久中文字 | 久久69精品久久久久久久电影好 | 久久久久综合 | 99精品福利视频 | 精品成人在线 | 国产毛片毛片 | 国产精品欧美日韩 | 日本激情视频一区二区三区 | 欧美福利电影在线观看 | 欧美一区二区三区视频 | 国产一级片在线播放 | 97精品视频 | 伊人www| 欧美福利在线 | 国产欧美日韩综合精品 | 亚洲www永久成人夜色 | 日韩av免费在线观看 | 91福利视频导航 | 亚洲免费av片 | 精品日韩一区二区三区 | 精品伦精品一区二区三区视频 | 国产韩国精品一区二区三区 | 久久国产成人 | 国产成人午夜高潮毛片 | 色爱av| 国产在线小视频 | 成人深夜小视频 | av官网 | 视色视频在线观看 | 亚洲一区二区三区视频 | 黄色最新网站 | 99亚洲 | 国产精品 日韩 | 成人福利影院 | 天堂亚洲网 | www.44181com| 国内成人免费视频 | 青青久久| 91精品久久久久久久久 | 超碰在线一区二区三区 | 午夜精品一区二区三区在线视频 | 国产91九色 | 色欧美片视频在线观看 | 欧美日韩精品一区二区在线播放 | 后人极品翘臀美女在线播放 | 久久精品一区二区 | 成人免费视频网站在线观看 | 国产精品国产精品国产专区不片 | 国产成人精品高清久久 | 成人男女激情免费视频 | 国产精品成人一区二区三区夜夜夜 | 国产精品2| 日韩成人影院 | 日韩成人在线观看 | 国产成人综合网 | chinese中国真实乱对白 | 蜜桃视频一区 | 国产亚洲一区二区三区在线观看 | 综合伊人| 国产一区二区免费 | 欧美自拍视频 | 国产视频一区二区 | 毛片99| 激情五月婷婷 | 91精品一区二区三区久久久久久 | 日韩久久一区二区 | 性色浪潮 | 久久久国产精品视频 | 欧美日韩精品久久久 | 精品日韩一区二区 | 丁香久久 | 欧美一级做性受免费大片免费 | 一级在线看 | 九色影院 | 亚洲精品久久久 | 国产精品久久国产精品99 gif | 亚洲成av人片在线观看无码 | 久久精av| 欧美一级黄色片 | 99亚洲视频 | 日韩在线精品 | 欧美a区 | 欧美日韩在线综合 | av在线免费观看网站 | 欧美日韩一区二区三区在线观看 | 成人国产精品免费观看 | 青青久在线视频 | 久热精品视频在线播放 | 91视频网址 | 亚洲欧美福利视频 | 亚洲欧美激情精品一区二区 | 精品日韩一区二区 | 国产精品二区三区 | 国产午夜精品美女视频明星a级 | 日韩在线视频中文字幕 | 亚洲精品中文字幕 | 二区影院 | 可以在线看的黄色网址 | 亚洲成人精品一区二区三区 | 国产精品91网站 | 亚洲一区中文字幕在线观看 | 中文字幕在线免费 | 久久成人免费视频 | 久久精品一区二区三区四区 | 日本午夜视频 | 亚洲国产区 | 亚洲精品免费视频 | 精品2区| 久久久精品欧美一区二区免费 | 日韩爽妇网 | 久久久精品电影 | 日批免费观看视频 | 成人黄色电影小说 | 欧美一区二区三区在线看 | 国产精品视频一 | 欧美国产日本一区 | 综合导航| 日日日操| 国产99久久精品 | 日本一区二区在线视频 | 亚洲欧美高清 | 91国内精品 | 激情毛片| 欧美二区三区 | 一本一道久久精品综合 | 日本亚洲国产一区二区三区 | 久久久久久日产精品 | 亚洲一区二区三区四区的 | 亚洲精品区 | 日本黄网站在线观看 | 99国产视频 | 中国特黄毛片 | 精品国产乱码一区二区三区 | 在线观看亚洲免费 | 黑人精品xxx一区一二区 | 精品国产乱码久久久久久1区2区 | 电影91久久久 | 视频成人免费 | 久久久久国产精品 | 一区二区三区av | 国产在线视频a | 一区二区日本 | 亚洲精品久久久一区二区三区 | 成人在线免费 | 久久精品网 | 国产乡下妇女做爰视频 | 成人福利视频 | 午夜精品久久久久久久男人的天堂 | 在线无码| 黄色av网站免费 | 久久国产亚洲精品 | 中国大陆高清aⅴ毛片 | 久久久久久亚洲一区二区三区蜜臀 | 一 级 黄 色 片免费网站 | 欧美一区二区三区 | 国产精品一区欧美 | 免费黄在线看 | 中文字幕一二三区 | 亚洲午夜精品一区二区三区他趣 | 国产一区二区三区网站 | 国产精品一码二码三码在线 | 日韩一区二区在线播放 | 国产精品一区二区三区四区五区 | 老司机狠狠爱 | 国产精品久久久久久久午夜片 | 亚洲一区二区三区视频 | 99日韩| 在线看一区二区 | 日韩av一区二区在线观看 | 中文字幕视频在线播放 | 国产精品视频一 | 91视频日韩 | 九色av | 国产一二三四在线 | 国产传媒在线观看 | 国产精品久久久久久久久久久久久久久久 | 国产亚洲一区二区精品 | 欧美国产精品一区 | 综合久久综合 | 成人免费一区二区三区视频软件 | 黄色片网站在线免费观看 | 老司机深夜福利视频 | 亚洲狠狠久久综合一区77777 | 欧美精品一区在线 | 成年人精品视频在线观看 | 欧美自拍视频一区 | 欧美日韩亚洲高清 | 久久亚洲一区二区三区四区五区高 | 吴梦梦到粉丝家实战华中在线观看 | 国产精品国产精品国产专区不蜜 | 国产精品美女久久久久久久久久久 | 久草在线免费福利资源 | 九九色综合 | 国产精品日韩三级 | 超碰在线人 | 亚洲欧美一区二区三区久久 | 日韩一区二区三区av | 夜夜艹| 国产精品成人一区二区三区 | 在线免费看a | 亚洲国产一区二区三区, | 亚洲成av人片一区二区三区 | 在线观看国产wwwa级羞羞视频 | 亚洲精品一区久久久久久 | 国产欧美精品一区二区三区四区 | 青青草视频免费观看 | 久久国产精品久久久久久久久久 | 久草热8精品视频在线观看 欧美全黄 | 久久国产欧美日韩精品 | 精品日韩在线 | 在线视频国产一区 | 久久久久久国产 | 欧洲精品乱码久久久久蜜桃 | 99精品在线观看 | 欧美精品v国产精品v日韩精品 | 国产黄色免费视频 | 先锋av资源网 | 国产精品毛片久久久久久久 | a在线免费观看 | 久久99深爱久久99精品 | 国产免费一级特黄录像 | 天天天干夜夜夜操 | 一级国产视频 | 亚洲成av人片在线观看 | 午夜精品视频在线观看 | 国产美女一区二区 | 天天天天爽 | 日韩一区二区在线观看 | 亚洲欧美国产一区二区三区 | 亚洲天堂一区 | 国产精品www | 欧美精品一区二区三区在线四季 | 亚洲视频中文字幕 | 亚洲美女视频在线观看 | 国内精品一区二区三区 | 久久精品福利 | 欧美一卡二卡在线观看 | 在线观看亚洲视频 | www婷婷| 亚洲一区二区三区四区五区午夜 | 99精品网站| 欧美一区二区三区成人 | 亚洲一区中文字幕在线 | 国产99久久精品 | 成人免费视频播放 | 国产精品久久久久久久 | 国产精品久久久久久亚洲调教 | www国产一区 | 99精品一区二区 | 超碰在线一区二区三区 | 日韩在线观看毛片 | 欧美第一页 | 成人在线不卡 | 国产一级一级国产 | 日韩精品一区二区三区在线 | 米奇狠狠狠狠8877 | 亚洲精品9999 | 中文字幕 国产精品 | 在线中文日韩 | a级毛片免费高清视频 | 精品久久香蕉国产线看观看亚洲 | 狠狠综合久久av一区二区老牛 | www.久久精品 | 亚洲综合区| 国产精品一区二区在线观看 | 九九九色 | 一本一道久久精品综合 | 中文字幕免费观看 | 欧美日韩国产一区二区三区 | 激情欧美一区二区三区中文字幕 | 亚洲色图综合 | 成人片在线播放 | 国产精品午夜电影 | 国产精品综合 | 成人一区二区三区 | 中国国产一级毛片 | 99爱在线观看 | 日韩和的一区二区 | av网站在线免费观看 | 91免费版在线看 | 污色视频在线观看 | 自拍视频在线观看免费 | 色婷婷网 | 日韩免费观看视频 | 国产91在线播放精品91 | 国产精品久久久久久久久小说 | 免费在线观看av的网站 | 欧美视频在线观看 | 亚洲精品国产乱码在线看蜜月 | 6080亚洲精品一区二区 | 日韩精品久久 | 欧美一区二区在线 | 国产精品不卡一区 | 在线色网站 | 欧美成年黄网站色视频 | 黄色一级视屏 | 国产成人精品一区二区三区四区 | 久久国产精品免费一区二区三区 | 日韩超级毛片 | 特黄特色大片免费视频观看 | 波多野结衣一区二区三区中文字幕 | 97国产在线视频 | 黑人一级片视频 | 国产精品大全 | 国产精品久久久久久久久大全 | 天堂av一区二区 | 精品国模一区二区三区欧美 | 欧美一区二区三区在线 | 毛片一级片| 在线免费视频成人 | 噜噜噜噜噜在线视频 | 亚洲一区二区久久 | 国产高清在线精品一区 | h成人在线| 香蕉久久久久久 | 亚洲精品影院 | 欧美日韩在线精品 | 久久久久久中文字幕 | 欧美精品一区二区三区四区五区 | 亚洲免费av在线 | 午夜影院在线观看 | 亚洲精品一区二区三区中文字幕 | 亚洲精品成人久久久 | 欧美三级电影在线播放 | 美女毛片 | 欧美日韩国产在线观看 | 一区二区三区免费网站 | 中文字幕日韩在线 | 欧美性猛交一区二区三区精品 | 99精品欧美一区二区三区综合在线 | 亚洲国产中文字幕 | 欧美亚洲国产一区 | 国产成人久久精品一区二区三区 | 日韩一区二区观看 | 成人午夜在线 | 欧美日韩电影一区二区 | 亚洲一区二区三区四区在线观看 | 亚洲一区二区三区四区在线观看 | www.亚洲| 国产老女人精品毛片久久 | 欧美大片在线看免费观看 | 日本日韩中文字幕 | 99草草 | 久久精品欧美一区二区三区不卡 | 97视频在线免费观看 | 中文字幕一区二区三区乱码在线 | 日韩精品www | 男人的天堂久久 | 国内精品国产三级国产在线专 | 久久国产美女 | 日韩a在线| 免费看一区二区三区 | 欧美日韩一区二区三区在线观看 | 亚洲国产精品自拍 | 久久精品小视频 | 超碰在线播 | 一区二区欧美视频 | 亚洲午夜精品在线观看 | 亚洲视频在线观看视频 | 欧美综合在线一区 | 99久久久| 日本免费视频 | 在线观看免费毛片视频 | 一二三精品区 | 欧美在线观看网站 | 国产午夜精品久久久久免费视高清 | 一级免费毛片 | 免费在线一区二区三区 | 国产激情精品一区二区三区 | av解说在线精品 | 欧美亚洲天堂 | 欧美成人性生活 | 亚洲 欧美 日韩在线 | 国产欧美精品一区二区三区四区 | 亚洲国产欧美91 | 国产美女一区二区 | 亚洲久久久久久 | 一级全黄少妇性色生活片免费 | 一级毛片大全免费播放 | 欧美一区2区三区3区公司 | 精品国产一区二区三区成人影院 | 91九色网站| 亚洲精品成人a8198a | 中文字幕在线视频一区 | 国产精品视频专区 | 中文字幕在线免费视频 | 亚洲专区国产精品 | 日韩欧美中文字幕在线视频 | 香蕉视频一级片 | 国产在线不卡 | 五月激情综合 | 亚洲一区在线视频 | 热久久影院 | 美日韩成人 | 91精品国产综合久久久久久丝袜 | 国产高清在线观看 | 欧美理论片在线观看 | 成人在线手机版视频 | 久久a国产| 国产探花在线精品一区二区 | 国产一区二区三区欧美 | 在线观看午夜免费视频 | 久久国产精品毛片 | 中文字幕一区二区三区不卡 | 色鲁97精品国产亚洲 | 大黑人交xxx极品hd | 超碰在线91| 久久久男人天堂 | 亚洲最大免费视频 | 成人av免费| 中文字幕综合在线 | 国产一区二区三区免费在线 | 国语av在线 | 亚洲高清在线观看视频 | 国产成人高清在线 | 精品久久久久久久久久久下田 | 日操 | 91精品国产91久久久久久密臀 | 欧美精品在线观看 | 99国产精品视频免费观看一公开 | 久久六月| 亚洲欧美第一页 | 国产精品美女久久久久久久网站 | 国产精品欧美一区二区三区 | 色网站视频 | 久久精品二区 | 福利精品在线观看 | 国产在线一区二区 | 在线观看免费av的网址 | 欧美一区二区三区电影 | 欧美专区在线观看 | а天堂中文最新一区二区三区 | 国精日本亚洲欧州国产中文久久 | 日韩成年人视频 | 成人av一区二区三区 | 国产日韩欧美视频 | 久久免费福利视频 | 99亚洲国产精品 | 国产精品91av | 久久网一区二区三区 | 亚洲一区二区黄 | 国内精品一区二区三区 | 亚洲视频欧美视频 | 一级全黄少妇性色生活片免费 | 精品一级| 久久美女视频 | 99精品99| 毛片福利| 亚洲aⅴ天堂av在线电影软件 | 欧美激情欧美激情在线五月 | www.日韩系列 | 国产精品一区久久久久 | 不卡的免费av | 国产免费久久 | 亚洲欧美在线视频 | 男女视频在线观看 | 欧美久热 | 久久久精品国产 | 国产区视频在线观看 | 日韩成人精品视频在线观看 | 91亚色| 久久青 | 正在播放国产一区 | 免费av大全| 日本一区二区三区视频免费看 | 亚洲一区二区在线电影 | 日韩午夜激情视频 | 五月香婷婷 | 91人人澡人人爽 | 国产乱淫av片 | 国产精品久久国产愉拍 | 国产真实乱全部视频 | 欧美日韩在线观看一区二区 | 日本黄色免费播放 | 男女网站在线观看 | 欧美一区不卡 | 欧美日韩成人在线观看 | 国产h片在线观看 | ww8888免费视频 | 999久久国产 | 国产免费一区二区三区 | 中文字幕二区 | 99这里只有精品视频 | 久久亚洲精品视频 | 91精品国产色综合久久不卡98口 | 九九亚洲精品 | 精品国产一区二区三区久久 | 一区二区三区免费看 | 欧美天天 | 高清国产一区二区三区 | 成人精品视频99在线观看免费 | 日韩精品99 | 视频一区二区三区在线观看 | 日本中文字幕在线播放 | 国产精品成人一区二区三区夜夜夜 | 亚洲精品成人av | 亚洲精品成人悠悠色影视 | 国产日韩欧美 | 涩涩久久 | 久久99国产一区二区三区 | 久久久精品免费观看 | 伊人久久精品久久亚洲一区 | 国产成人精品a视频一区www | 日韩亚洲 | 国产一区二区三区高清 | 国产成人精品一区二区三区四区 | 久久蜜桃精品一区二区三区综合网 | 中文字幕一区二区三区精彩视频 | 国产精品大片 | 亚洲综合二区 | 北条麻妃一区二区三区在线观看 | 国产精品永久免费 | 超碰一区二区三区 | 国产三级在线 | ww8888免费视频 | 天堂资源| 成人黄色在线视频 | 中文字幕亚洲字幕一区二区 | 蜜桃av人人夜夜澡人人爽 | 日本久久久久久 | 午夜影院入口 | av大全在线 | 中文字幕日韩欧美一区二区三区 | 国产中文字幕在线观看 | 2019国产精品 | 成人黄色免费 | 亚洲精品一区二区三区樱花 | 小草av| 国产区精品 | 亚洲欧美成人网 | 久久久久国产一级毛片高清版小说 | 黄a免费看 | 欧美日韩免费一区二区三区 | 精品无人乱码一区二区三区 | 欧美一级三级 | 欧美国产日韩一区 | 久久精品店 | 91精品国产综合久久久久久丝袜 | 91精品一区二区三区久久久久久 | 久久99精品久久久久蜜臀 | 中文字幕欧美日韩 | 欧美亚洲在线 | 国产精品国产a级 | 日韩免费网站 | 一级片免费视频 | 奇米色777欧美一区二区 | 亚洲欧美日韩电影 | 亚洲精品色 | 亚洲欧美日韩精品久久奇米色影视 | 免费av片网站 | 亚洲第一色 | 午夜私人影院在线观看 | 奇米一区二区 | 欧美一区二区三区黄 | 精品国产一区二区 | 最新国产成人 | 久草久草久 | 精品日韩在线观看 | 欧美日韩中文 | 国产在线小视频 | 久久综合一区二区 | 欧美黄色一区 | 免费国产一区 | 在线观看日韩 | 91久久久久久 | 九九99| 国产黄色免费网站 | 久久久精品网站 | av网站在线免费观看 | 中文字幕不卡 | 欧美精品久久一区 | 免费在线看a | 波多野结衣先锋影音 | 国产www | 91精品欧美久久久久久动漫 | 国产片淫级awww | 欧美亚洲激情 | 精品国产黄a∨片高清在线 激情网站免费 | 天天操操 | 五月天婷婷综合 | 久久激情综合 | 国产三级在线 | 最近日韩中文字幕 | 久久久久久久 | 国产在线一区二区三区 | 中文字幕在线观看www | 四虎成人永久 | 国产一区二区三区视频在线观看 | 国产精品久久久久久久午夜片 | 午夜午夜精品一区二区三区文 | 国产免费一区二区 | 夜添久久精品亚洲国产精品 | 久久久久久久久一区 | 最新国产精品 | 亚洲天堂免费 | www.久久 | 午夜影院免费 | 国产精品 日韩 | 国产精品美女久久久久久免费 | 亚洲一区 日韩精品 中文字幕 | 超级碰在线视频 | 97伦理片| 久久这里只有精品8 | 黄色的视频免费 | 欧美高清成人 | 天天干天天操天天舔 |