中文字幕一区二区精品区,国产精品成人免费视频,亚洲国产精品无码久久久蜜芽婷,伊人色综合网一区二区三区,亚洲国产精品不卡av在线

中文字幕一区二区精品区,国产精品成人免费视频,亚洲国产精品无码久久久蜜芽婷,伊人色综合网一区二区三区,亚洲国产精品不卡av在线

認證培訓,h3c認證體系,網(wǎng)絡(luò )工程師
豐沃創(chuàng  )新

HTTP服務(wù)器中遇到的一些問(wèn)題

  • 發(fā)布時(shí)間: 2018-4-27 9:06:27

前不久,手寫(xiě)了個(gè)服務(wù)器,并不難,還是基于 HttpListener ,敲簡(jiǎn)單!

當然還是基于最早寫(xiě)的一個(gè) Server 雛形,項目名為 Kserver,KServer 當初是為了當初自己想用 C# 實(shí)現 WebDav 的一些想法,后來(lái)也沒(méi)有繼續寫(xiě)下去,工程量太大了,有興趣的朋友可以看看 IETF RFC4918 中的協(xié)議定義嘗試實(shí)現一把,會(huì )很愉快的。

說(shuō)說(shuō)我的 Kserver 的調用,基本上三兩行代碼的事情。

  1. int port = 6600; 
  2. KServer kServer = new KServer(port); 
  3. kServer.OnRequest += KServer_OnRequest; 
  4. kServer.OnError += KServer_OnError; 
  5. kServer.Start(); 
  6. Console.WriteLine("listening on port {0} ...", port); 

在 KServer_OnRequest 中處理正常的 HTTP 請求,在 KServer_OnError 中處理程序錯誤,通常這里返回 HTTP 500 給客戶(hù)端。

說(shuō)一個(gè)坑爹的事情,這個(gè)程序啟動(dòng)后占用 6600 端口,然后在 Apache 配置了反向代理。

  1. <VirtualHost *:80> 
  2.     ServerName 1ll.co 
  3.     ProxyRequests off 
  4.     <Proxy *> 
  5.     Order deny,allow 
  6.     Allow from all 
  7.     </Proxy> 
  8.     ProxyPass / http://localhost:6600/ 
  9.     ProxyPassReverse / http://localhost:6600/ 
  10.     ProxyPassReverseCookieDomain http://localhost:6600 http://1ll.co 
  11.     ProxyPassReverseCookiePath / http://localhost:6600/ 
  12. </VirtualHost> 

但是寫(xiě) Cookie 始終不成功,寫(xiě) Cookie 的關(guān)鍵代碼如下:

  1. resp.AppendHeader("Set-Cookie"name + "=" + value + "; path=/; domain=" + host + "; expires=" + expireGMT); 

resp 是 KHttpServer.IHttpListenerResponse 的實(shí)現,繼承于 HttpListenerResponse,我設置 Host 為 req.Url.Host。這個(gè)在本機是不會(huì )有問(wèn)題的,單獨在服務(wù)器中使用 80 端口也不會(huì )有問(wèn)題,有問(wèn)題的是即便通過(guò)反向代理,獲取 Headers 中 的 Host 值始終還是 localhost,要通過(guò) X-Forwarded-Host 才可以,這個(gè)大學(xué)時(shí)好歹了解過(guò),平時(shí)開(kāi)發(fā)全部基于 IIS,沒(méi)有反向代理,頭一回遇到。

  1. var headers = obj.Request.Headers; 
  2. if (string.IsNullOrEmpty(_Host)) 
  3.     // 是否有反向代理 
  4.     bool poweredByProxy = false
  5.     IEnumerator keyenum = headers.GetEnumerator(); 
  6.     while (keyenum.MoveNext()) 
  7.     { 
  8.         string key = keyenum.Current.ToString(); 
  9.         if (key == "X-Forwarded-Host"
  10.         { 
  11.             _Host = headers[key]; 
  12.             poweredByProxy = true
  13.             break; 
  14.         } 
  15.     } 
  16.     // 沒(méi)有反向代理,就使用默認 Host 
  17.     if (!poweredByProxy) _Host = obj.Request.Url.Host; 

接下來(lái)就是模板引擎了,不用 Razor 了,說(shuō)真的對 Razor 漸漸的沒(méi)啥好感了,感覺(jué)挺笨重,所以選用了 DotLiquid,用 Liquid 做模板引擎的應用可以說(shuō)是非常多了。

  • DotLiquid http://dotliquidmarkup.org/

于是擴展了 String 類(lèi),增加了 Html 模板文件渲染 Html 的方法:

  1. public static string AsHtmlFromTemplate(this string tmpl, object model) 
  2.  { 
  3.      string html = Template.Parse(tmpl).Render(Hash.FromAnonymousObject(model)); 
  4.      return html; 
  5.  } 

然后包含模板頁(yè)渲染的寫(xiě)法就變成醬嬸了。

  1. string postListHtmlTmpl = ResourceHelper.LoadStringResource("postlist.html"); 
  2. string adminHtmlTmpl = ResourceHelper.LoadStringResource("admin.html"); 
  3. obj.Response.AsHtml(adminHtmlTmpl.AsHtmlFromTemplate(new 
  4.     RenderBody = postListHtmlTmpl.AsHtmlFromTemplate(new 
  5.     { 
  6.         PageData = pageData.ToArray(), 
  7.         NaviData = naviData, 
  8.         CurrentPage = page.ToString(), 
  9.         Error = error, 
  10.         Success = success 
  11.     }) 
  12. })); 

RenderBody 是模仿 Razor 搞的個(gè)關(guān)鍵字,表示是子頁(yè)顯示內容的區域。

對于字體、腳本(第三方)、圖片這些靜態(tài)資源,我的想法是既然不會(huì )有大的變動(dòng),就讓他永久緩存在瀏覽器好了。

  1. obj.Response.AppendHeader("Cache-Control""max-age=315360000"); 

其他的就是處理 POST ,處理 Cookie 了。HttpListenerRequest 是沒(méi)法獲取 Form 表單的值的,只能讀取 InputStream 中的值,然后自己根據鍵值對獲取了。Cookie 是不能簡(jiǎn)單的通過(guò)鍵值對分割,查詢(xún)值按照等號分割沒(méi)關(guān)系,因為 Value 都是編碼了的,不會(huì )含有等號,但是 Cookie 中是可能會(huì )有等號的,比如 Base64 編碼過(guò)的值里,大部分都有。

同樣,獲取 Cookie 的方法也木有,自己從 Header 里找吧,滑稽。

  1. public static string GetCookie(this KHttpServer.IHttpListenerRequest req, string name
  2.     System.Collections.Specialized.NameValueCollection headers = req.Headers; 
  3.     string cookies = headers["Cookie"]; 
  4.     if (cookies == null || cookies.Length < 1) return null
  5.     var dict = cookies.AsCookieParameters(); 
  6.     if (!dict.ContainsKey(name)) return null
  7.     return dict[name]; 

接下來(lái)模擬登陸成功后的跳轉,用過(guò) Asp.net 的知道有個(gè) Response.Redirect ,不過(guò) HttpListenerRequest 肯定是沒(méi)有這個(gè)方法的,可以通過(guò)設置 Header 302 重定向就行了,為啥是 302 不是 301,自己想吧。

  1. public static void Redirect(this KHttpServer.IHttpListenerResponse resp, string url) 
  2.     resp.StatusCode = 302; 
  3.     resp.AppendHeader("Location", url); 
  4.     resp.Close(); 

對于較大的頁(yè)面,也許還是希望用 Gzip 壓縮一下,需要設置 Content-Encoding 為 Gzip。

  1. resp.AppendHeader("Content-Encoding""gzip"); 

我這里處理比較簡(jiǎn)單,是不管客戶(hù)端的 Accept-Type 的,不過(guò)現代瀏覽器基本都支持了。

對相應內容進(jìn)行壓縮:

  1. resp.AppendHeader("Content-Encoding""gzip"); 
  2. byte[] data = GzipCompressor.Compress(text); 
  3. MemoryStream ms = new MemoryStream(data); 
  4. AsStream(resp, ms, mime); 
  5. ms.Close(); 

既然是純 C#,沒(méi)有了 WebForm 和 MVC 這類(lèi)框架,分頁(yè)處理也顯得不簡(jiǎn)單了,從網(wǎng)上改造了一個(gè) PHP 寫(xiě)的分頁(yè)類(lèi),果然 PHP 是最好的語(yǔ)言!鷂→

這不是取數據時(shí)的分頁(yè),而是顯示時(shí)候的分頁(yè)。

  1. /// <summary> 
  2. /// 分頁(yè)處理類(lèi) 
  3. /// </summary> 
  4. public class PageNumber 
  5.     /// <summary> 
  6.     /// 是否顯示[首頁(yè)] 
  7.     /// </summary> 
  8.     public bool ShowFirstPage { get; set; } 
  9.  
  10.     /// <summary> 
  11.     /// 是否顯示[末頁(yè)] 
  12.     /// </summary> 
  13.     public bool ShowEndPage { get; set; } 
  14.  
  15.     /// <summary> 
  16.     /// 翻頁(yè)Url前綴 
  17.     /// </summary> 
  18.     public string UrlPrefix { get; set; } 
  19.  
  20.     public PageNumber() 
  21.     { 
  22.         ShowFirstPage = true
  23.         ShowEndPage = true
  24.         UrlPrefix = ""
  25.     } 
  26.  
  27.     /// <summary> 
  28.     /// 獲取分頁(yè),返回數據,如[["1","首頁(yè)","/page/1"]] 
  29.     /// </summary> 
  30.     /// <param name="page">當前頁(yè)</param> 
  31.     /// <param name="pages">總頁(yè)數</param> 
  32.     /// <returns></returns
  33.     public List<string[]> GetPageNumbers(int page, int pages) 
  34.     { 
  35.  
  36.         List<string[]> plists = new List<string[]>(); 
  37.  
  38.         //最多顯示多少個(gè)頁(yè)碼   
  39.         int _pageNum = 5; 
  40.         //當前頁(yè)面小于1 則為1   
  41.         page = page < 1 ? 1 : page; 
  42.         //當前頁(yè)大于總頁(yè)數 則為總頁(yè)數   
  43.         page = page > pages ? pages : page; 
  44.         //頁(yè)數小當前頁(yè) 則為當前頁(yè)   
  45.         pages = pages < page ? page : pages; 
  46.  
  47.         //計算開(kāi)始頁(yè)   
  48.         int _start = page - (int)Math.Floor((double)_pageNum / 2); 
  49.         _start = _start < 1 ? 1 : _start; 
  50.         //計算結束頁(yè)   
  51.         int _end = page + (int)Math.Floor((double)_pageNum / 2); 
  52.         _end = _end > pages ? pages : _end; 
  53.  
  54.         //當前顯示的頁(yè)碼個(gè)數不夠最大頁(yè)碼數,在進(jìn)行左右調整   
  55.         int _curPageNum = _end - _start + 1; 
  56.         //左調整   
  57.         if (_curPageNum < _pageNum && _start > 1) 
  58.         { 
  59.             _start = _start - (_pageNum - _curPageNum); 
  60.             _start = _start < 1 ? 1 : _start; 
  61.             _curPageNum = _end - _start + 1; 
  62.         } 
  63.         //右邊調整   
  64.         if (_curPageNum < _pageNum && _end < pages) 
  65.         { 
  66.             _end = _end + (_pageNum - _curPageNum); 
  67.             _end = _end > pages ? pages : _end; 
  68.         } 
  69.  
  70.         if (ShowFirstPage) 
  71.             plists.Add(new string[] { """首頁(yè)", string.IsNullOrEmpty(UrlPrefix) ? "" : UrlPrefix + "1" }); 
  72.  
  73.         if (page > 1) 
  74.         { 
  75.             plists.Add(new string[] { (page - 1).ToString(), "上頁(yè)", string.IsNullOrEmpty(UrlPrefix) ? "" : UrlPrefix + (page - 1).ToString() }); 
  76.         } 
  77.         for (int i = _start; i <= _end; i++) 
  78.         { 
  79.             plists.Add(new string[] { i.ToString(), i.ToString(), string.IsNullOrEmpty(UrlPrefix) ? "" : UrlPrefix + i.ToString() }); 
  80.         } 
  81.         if (page < _end) 
  82.         { 
  83.             plists.Add(new string[] { (page + 1).ToString(), "下頁(yè)" , string.IsNullOrEmpty(UrlPrefix) ? "" : UrlPrefix + (page + 1).ToString() }); 
  84.         } 
  85.  
  86.         if (ShowEndPage) 
  87.             plists.Add(new string[] { """末頁(yè)", string.IsNullOrEmpty(UrlPrefix) ? "" : UrlPrefix + (pages).ToString() }); 
  88.  
  89.         return plists; 
  90.     } 

用 SimpleMDE 作為 Markdown 編輯器,,誰(shuí)用誰(shuí)知道,對于富文本的排版,我始終無(wú)能為力,Word 也不會(huì )用,markdown 真好用!

  • SimpleMDE https://simplemde.com/

效果如下圖:

SimpleMDE 是沒(méi)有上傳圖片的功能,需要自己處理,不過(guò)自定義按鈕官方文檔中有,我只是做了寫(xiě)微小的工作,為按鈕加個(gè)選圖片和上傳的事件,這需要 jQuery 和 jQuery.Form 的支持。

  1. function upload(){ 
  2.     var sid = 'hTyx6Tm9Ikl06Ap'
  3.     var forms = $('#form_' + sid).length; 
  4.     if (forms > 0) { 
  5.         $('#form_' + sid).remove(); 
  6.     } 
  7.     var fhtml = '<form action="圖片上傳接口" method="post" enctype="multipart/form-data" style="display:none;" id="form_' + sid + '">'
  8.     fhtml += '<input id="input_' + sid + '" type="file" name="file">'
  9.     fhtml += '<input type="submit" value="upload" />'
  10.     fhtml += '</form>'
  11.     $('body').append(fhtml); 
  12.     $('#input_' + sid).change(function () { 
  13.         $('#form_' + sid).ajaxSubmit({ 
  14.             success: function (data) { 
  15.             alert(data); 
  16.             } 
  17.         }); 
  18.     }).click(); 

如果你的接口是外部服務(wù)或者阿里云OSS,要記得設置跨域,不然報錯,這個(gè)搞過(guò)開(kāi)發(fā)的都懂得。

最初版本的后臺 Markdown 渲染用的 Github 上的 star 最多的那一個(gè) Markdig,在 CentOS 7 下 mono 環(huán)境運行報錯,換了 CommonMark 使用,這個(gè)在 Nuget 上能找到。

最終的最終,把所有資源都打包進(jìn)了資源文件,用 ILMerge 合并程序集,你的服務(wù)端就只剩下一個(gè) EXE 了,滑稽 →_→

蜜臀aV无码精品人妻色欲| 中文字幕在线亚洲日韩码| 人妻少妇偷人精品无码| 日本免免费高清一区二区三区| 曰韩无码大尺度àv| 一区二区视频无码国内精品久久| 综合高清免费无码| 亚洲av毛片一区二区久久麻豆| 欧美视频毛片在线无需| 在线精品国产一区二区三区| 亚洲一区二区精品无码色欲Av| 中文字幕精品日韩综合p| 国产激情无码一区二区三区| 韩国特级毛片免费观看| 一区二区免费高清观看国产丝瓜| 亚洲一区二区三区av激情| 日韩经典欧美一区二区三区| 亚洲国产欧美日韩精品久久久| 亚洲综合图片区a| 亚洲免费图区在线视频| 人妻少妇中文字幕久久| 日韩精品无码一区二区三区aV| 中文字幕无码日韩aⅴ| 一级毛片在线播放全部| 亚洲精品无人一区二区| 久久精品国产亚洲av果冻传媒| 欧美高清精品不卡在线观看| 精品九九久久久精品| 曰本aⅴ久久中文字幕综合| 亚洲精品天天影视| 亚洲国产精品一区二区三区| 亚洲狠狠久久综合一区观看| 在线观看国产视频wwww| 精品一区二区三区四区| 中文字幕巨大的乳专区| 亚洲精品综合第一| av无码人妻水多a片| 亚洲熟妇A∨日韩熟妇在线| 国产+无码+一区二区| 国产精品自拍三级片| 中文字幕在线视频免费播放| 99国产精品尤物视频在线99| 精品国产一区二区香蕉| 欧美大片va欧美在线播放| 亚洲黄网免费观看| 亚洲国产精品无码久久久不卡| 国产精自产拍久久久久久蜜| 国产精品国产三级国产专区不卡| 亚洲AV综合色区一区二区偷拍| 欧美性色欧美A在线播放| 久久夜色精品国产噜噜| 国产黄A三级三级三级看三级| 亚洲国产成人av片在线播放| 一区二区三区毛片无码| 人人鲁人人莫人人爱精品| 一区二区三区日韩无码| 亚洲色欲久久久久综合网| 亚洲国产欧美日韩精品网| 在线观看婷婷99视频精品全部| 曰韩美女乱婬AAAA片软件| 亚洲国产精品自在在线观看| 国产久爱免费精品视频| 最新精品国偷自产在线91| 亚洲欧美日本韩国综合在线观看| 亚洲中文字幕一区二| 日韩欧美国产综合区手机在线| 在线观看国产成人av天堂不卡| 亚洲产精品一区二区| 亚洲一区二区中文| 人善交videos欧美3d| 在线免费av观看片| 精品国产亚洲第一页| 婷婷综合久久中文字幕| 一区二区三区精品久久夜夜嗨| 中文字幕一区二区三区夜色视频| 国产又刺激又黄又免费的视频| 亚洲AV成人无码久久精品老人| 亚洲国产私拍精品国模无码在线| 日韩国产欧美69乱码在线观看| 亚洲欧美第一的日产suv| 中国少妇的bbb真爽| 一区二区三区免费视频网站| 亚洲精品在线中文字幕无码aⅴ| 伊人色综合久久天天小片| 国产另类ts人妖一区二区| 日韩精品在线播放不卡| 亚洲人在线观看影院| 又黄又爽又色刺激免费软件| 亚洲精品乱码久久久久久蜜桃图片| 亚洲一区无码中文字幕| 中文字幕人妻系列人妻有码中文| 免费电影正片手机免费| 一区二区三区四区视频在线| 日本又大又粗又爽视频| 激情内射日本一区二区三区| 蜜桃国产成人精品区在线观看| 亚洲女初尝黑人巨高清全集下载| 国产乱子伦精品免费高清| 一本精品中文字幕在线| 亚洲精品一区二区三区| 又大又粗又硬又刺激又爽视频| a视频在线播放国产| 亚洲aV无码久久精品色欲| AV一区二区三区久久| 亚洲国产欧美在线人成app| 国产精品自在线拍国产电影| 亚洲狼人精品一区二区三区| 亚洲国产欧美日韩精品| 91在线播放国产日本欧美| 中文日韩AV影院在线观看| 无码A成人毛片一区二区三区| 亚洲香蕉视频综合在线| 熟妇高潮一区二区高清| 一区二区三区久久含羞草| 亚洲精品国产精品乱码不97| 在线播放台湾佬综合网| 亚洲精品国产品国语原创| 国产91精品无码麻豆| 亚洲人成网站18禁止久久影院| 少妇被粗大的猛烈进出69影院一| 久久久九九酒视频分享| 亚洲精品国产成人一区二区| 中国熟妇色XXXXXⅩ丰满| 中文无码AV人妻一级字幕VR| 国产成人无码aa精品一区| 亚洲の无码国产の无码影院| 国产欧美日韩综合一区在线播放| 亚洲一区在线免费| 亚洲av东京热一区二区| 亚洲人成网站免费播放| 在线观看精品视频网站| 激情偷乱视频一区二区三区| 亚洲人成绝费网站色www| 国产中文字幕剧情av| 在线看片免费人成视久网不卡| 亚洲国产精品毛片av| 亚洲高清中文日本小说| 亚洲欲色在线观看| 亚洲精品国产成人| 国产女主播精品大秀系列| 亚洲狼人窝在线资源站| 亚洲洲精品码无码电影| 亚洲欧美国产人成在线app| 亚洲一区在线观看免费| 在线a毛片免费视频观看| 亚洲专区九一视频| 国产精品无码A∨精品| 免费提供各类影片在线播放| 亚洲精品一区二区久| 国产二区视频在线观看| 97麻豆精品国产自产在线观看| 欧美精品一区久久精品| 人妻av无码专区久久| 91精品日韩人妻无码久久| 亚洲中文字幕无码中文字| 男女边吃奶边做边爱视频| 人妻人人澡人人爽人人精品乱| 亚洲成av人在线观看天堂无码| 亚洲欧美日韩在线香蕉| 亚洲国产精品无码久久98四季| 亚洲色欧美色2019| 久久久亚洲欧洲国产| 日韩熟妇中文字幕乱码| 日韩少妇HEYZO视频无码| 中文字幕+乱码+中文字幕av| 亚洲av无码一区二区三区四| 中文字幕日韩亚洲| 在线视频一卡二卡| 亚洲国产成人精品无码区在线观看| 中文字幕在线观看亚洲日韩| 中文字幕无码日韩aⅴ| 日韩综合无码中文字幕| 亚洲精品免费看日韩| 成人免费无码大片a毛片| 亚洲日本在线在线看片| 最新无码中文字幕一区| 免费高清人妻免费久久久久久久了| 亚洲av天堂无码| 亚洲欧美另类日产| 中文字幕人乱码中文| 亚洲成A∧人片在线播放| 国产日韩无码精品一区二区三区| 国产精品自在在线午夜出白浆| 亚洲国产精品视频免费看| 亚洲一线产区二线产区精华| 亚洲精品一区二区三区免费观看| 国产久热香蕉在线观看| 亚洲熟女精品中文字幕| 欧美另类精品久久久| 中文字幕av无码| 一区二区三区人妻| 亚洲第一AV片精品| 一本色道久久综合精品| 亚洲aV高清一区二区三区尤物| 亚洲无线码高清在线| 亚洲精品巨爆乳无码大乳巨| 国产aⅴ无码专区亚洲av麻豆| 亚洲国产中文日韩a精品乱码| 性欧美13处14处破在线观看| 亚洲成人欧美激情| 99久久国产自偷自偷免费一区| 亚洲精品中文幕一区二区| 日韩性爱特黄一级大片| 人人妻人人澡人人爽人人| 亚洲精品无码av无码专区一本| 亚洲特级毛片av无码专区| 久久久久久精品免费无码无| 亚洲另类无码一区二区三区| 成人片黄网站a毛片免费| 欧美日本一道高清国产| 一级精品无码不卡毛片| 一区二区三区深夜欧美| 成人日动漫卡一区二区三区动漫| 在线观看日韩一区二区视频| 国产亚洲日韩欧美久久一区二| 中文字字幕在线中| 亚洲午夜国产精品| 亚洲欧美日韩日产在线首页| 亚洲第一在线大黄网站| 一区二区免费高清| 亚洲v国产v天堂a| 中文字幕乱码中文乱码51精品| 亚洲精品一区二区三区丝袜| 精品久久午夜无码一区二区| 99久久久精品伊人大线蕉| 亚洲最新av片不卡无码久久| 亚洲AV无码乱码国产麻豆穿越| 午夜福利视频理论片在线| 亚洲无码a∨在线观看| 在线观看国产情趣免费视频| 亚洲精品国产精华液| 韩国日本电影在线观看| 无遮挡动漫肉h在线观看| 亚洲国产99在线精品一区二区| 伊人久久大香线蕉综合网蜜芽| 91国语露脸精品国产| av色欲无码人妻中文字幕| 亚洲av午夜成人片精品网站| 亚洲成AV人片在色猫咪| 中文字幕一二三综合a| 一级黄片在线播放| 亚洲综合成人网在线观看| 91麻豆精品91久久久久久清纯| 免费一区二区三区日韩| 91麻豆精品国产片在线观看| 亚洲成a人片在线观看老师| 韩国中文字幕在线观看| 欧美精品中文字幕亚洲| 亚洲国产精品无码久线| 国产精品视频一区二区三区八戒| 一级禁播片,电影院看不到| 亚洲国产精品美女久久久| 亚洲免费视频在线观看| 精品久久久久久无码中文字幕一区| 中文字幕亚洲精品女同一页| 亚洲欧美在线综合一区二区三区| 亚洲国产午夜精品理论片| 中文字幕日韩第十页在线| 永久无码免费看aⅴ片| 亚洲国产岛国在线观看| 亚洲欧洲美洲无码精品va| 久久国产乱子伦精品免费午夜| 亚洲一区二区蜜桃| 亚洲成人中文字幕| 性色AV无码久久一区二区三区| 在线观看精品国产日本| 亚洲国产欧美日韩精品| 国产精品成人一区二区三区视频| 中文字幕一区二区三区精华液| 亚洲精品一级毛片tv| 一级毛片免费播放视频| 天天躁了天天躁了天天躁| 亚洲欧美中文字幕网站大| 亚洲人在线观看影院| 日本一区一本中文字幕| 亚洲一区精品视频在线| 国产人妻精品一区二区| 亚洲av中文aⅴ无码av不卡| 999视频播放网站| 亚洲日韩乱码一区二区三区四区| 国产av电影区二区三区曰曰骚网| 国产成人一区二区三区综合区| 亚洲欧美中文影视| 97在线观看视频免费| 亚洲一区在线视频| 欧美亚洲日韩日本综合久久| 在线观看不卡的免费av网站|