亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

fetchEventSource與fetch流式請(qǐng)求實(shí)戰(zhàn):AbortSignal復(fù)用引發(fā)的failed to fetch排查

fetchEventSource與fetch流式請(qǐng)求實(shí)戰(zhàn):AbortSignal復(fù)用引發(fā)的failed to fetch排查 1. 先交代背景我是怎么踩進(jìn)這個(gè)坑的最近在做一個(gè) AI 對(duì)話前端改造需要把大模型回答從“等半天一次性吐出來(lái)”改成“邊生成邊渲染”的流式效果。需求本身不復(fù)雜但落地時(shí)卻讓我在fetchEventSource和原生fetch之間反復(fù)橫跳折騰了整整兩天。最崩潰的一條報(bào)錯(cuò)長(zhǎng)這樣failed to fetch dynamically im 無(wú)法加載 agent 預(yù)設(shè) client api: agentpresets/list failed: failed to fetch明明上一秒接口還能通換掉請(qǐng)求方式之后水靈靈地就開(kāi)始failed to fetch而且只有流式相關(guān)接口跪了普通 JSON 接口一切正常。后來(lái)我把整套鏈路從瀏覽器到服務(wù)端到 SSL 全查了一遍最后才發(fā)現(xiàn)問(wèn)題不是網(wǎng)絡(luò)不是網(wǎng)關(guān)而是我跟fetchEventSource之間有層“沒(méi)有說(shuō)透的窗戶紙”。這篇文章不打算寫那種“fetchEventSource 比 fetch 好”的結(jié)論帖而是想把我這次真實(shí)的排查過(guò)程拆開(kāi)講清楚兩個(gè)東西在流式場(chǎng)景下的本質(zhì)區(qū)別。如果你也在做 SSE 流式輸出、大模型實(shí)時(shí)渲染或者遇到failed to fetch、agentpresets/list failed、abort被莫名觸發(fā)這類報(bào)錯(cuò)這篇文章里的排查思路和結(jié)論應(yīng)該能幫你少走不少?gòu)澛?。先說(shuō)結(jié)論要點(diǎn)原生fetch支持讀流但它只是“給了你水管”fetchEventSource則是一套完整的水泵系統(tǒng)。兩者在流式場(chǎng)景下的區(qū)別主要集中在四個(gè)地方——事件解析、斷線重連、請(qǐng)求頭約束、以及中止信號(hào)的語(yǔ)義。搞懂這四點(diǎn)幾乎所有流式報(bào)錯(cuò)都能定位。2. 重新認(rèn)識(shí)兩個(gè)讀取方式fetchEventSource 與 fetch 的本質(zhì)差別2.1 原生 fetch 的流式是“給了水管但沒(méi)給你水泵”原生fetch從很早開(kāi)始就支持讀取流式響應(yīng)了核心就三個(gè) APIconst response await fetch(/api/chat, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ prompt: 你好 }), }); const reader response.body.getReader(); const decoder new TextDecoder(); let buffer ; while (true) { const { value, done } await reader.read(); if (done) break; buffer decoder.decode(value, { stream: true }); // 自己解析 buffer 里的數(shù)據(jù) // SSE 格式通常是data: {content:xxx}\n\n const events buffer.split(\n\n); buffer events.pop(); for (const event of events) { const dataLine event.startsWith(data:) ? event.slice(5).trim() : ; if (dataLine dataLine ! [DONE]) { const json JSON.parse(dataLine); renderContent(json.content); } } }你看原生fetch其實(shí)完全能干這事。它把response.body變成了一個(gè)ReadableStream你每次reader.read()拿到一塊 Uint8Array然后自己解碼、自己切分、自己解析事件。也就是說(shuō)原生 fetch 的能力邊界是“給你一根水管水流過(guò)來(lái)你自己接”。這里能滿足基本的流式需求而且足夠輕量。但問(wèn)題在于它太“原生”了很多坑留給了使用者。比如SSE 協(xié)議規(guī)定事件之間用空行分隔但網(wǎng)絡(luò)分包可能把一個(gè)事件切成兩半你得自己維護(hù) buffer如果服務(wù)端發(fā)了注釋行以:開(kāi)頭的行用于心跳?;钅愕米约禾^(guò)斷線了不會(huì)自動(dòng)重連得自己寫重試邏輯請(qǐng)求頭雖然隨便你加但服務(wù)端 CORS 是否會(huì)暴露、預(yù)檢請(qǐng)求能否通過(guò)依然要自己處理。這些“自己來(lái)”的部分看著都不難但疊加在一起就是典型的多處邏輯交織、邊界問(wèn)題頻發(fā)的狀態(tài)。我第一次用原生 fetch 寫流式60 行代碼里有 30 行都在處理字符串切分和異常兜底。2.2 fetchEventSource可以理解為“配備了泵、閥門和儀表盤的成套方案”fetchEventSource是微軟出的一個(gè)庫(kù)本質(zhì)是在fetch之上做了一層封裝專門針對(duì) SSE 流式場(chǎng)景。它解決的核心痛點(diǎn)是EventSource天然只支持 GET不能用 POST 傳業(yè)務(wù)參數(shù)也不能自定義請(qǐng)求頭比如帶上 Authorization 令牌而 AI 對(duì)話類接口幾乎都是 POST JSON 鑒權(quán)頭。fetchEventSource用fetch重新實(shí)現(xiàn)了 SSE 的完整行為保留了 EventSource 的事件語(yǔ)義同時(shí)突破了它的請(qǐng)求約束。它的基本用法很短import { fetchEventSource } from microsoft/fetch-event-source; const ctrl new AbortController(); await fetchEventSource(/api/chat, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer ${token}, }, body: JSON.stringify({ prompt: 你好 }), signal: ctrl.signal, openWhenHidden: true, // 頁(yè)面隱藏時(shí)保持連接 async onopen(response) { if (response.ok) { console.log(連接建立狀態(tài)碼, response.status); } else { throw new Error(HTTP ${response.status}); } }, onmessage(event) { const data JSON.parse(event.data); renderContent(data.content); }, onclose() { console.log(流正常關(guān)閉); }, onerror(error) { console.error(流異常嘗試重連, error); // 返回非 void 時(shí)庫(kù)會(huì)自動(dòng)重連 // 如果不想重連可以 throw error }, });這套 API 看起來(lái)清爽多了。onmessage幫你把 SSE 的data:行解析好event.data直接就是內(nèi)容onerror里返回一個(gè)值庫(kù)會(huì)幫你做自動(dòng)重連連接建立、打開(kāi)、失敗、關(guān)閉全都有回調(diào)鉤子。還有openWhenHidden這個(gè)參數(shù)處理了頁(yè)面切換 Tab 時(shí)瀏覽器對(duì)連接的限制原生 EventSource 在這個(gè)場(chǎng)景下有個(gè)痛點(diǎn)是隱藏頁(yè)面會(huì)掛起這庫(kù)能繞開(kāi)。用一句生活化的話說(shuō)原生 fetch 給你一根水管讓你自己裝水泵、裝水表、裝閥門fetchEventSource直接交付一套集成好的供水系統(tǒng)你只需要打開(kāi)龍頭。2.3 為什么說(shuō)“自定義 header”是分水嶺很多人在選型時(shí)糾結(jié)“為什么不用 EventSource它不也是 SSE 嗎”——這就是沒(méi)踩過(guò)真實(shí)需求場(chǎng)景才會(huì)有的疑問(wèn)。原生EventSource的問(wèn)題非常致命它不能帶自定義請(qǐng)求頭。你拿它調(diào)一個(gè)需要Authorization的私有化模型接口直接就是 401 甚至跨域預(yù)檢失敗?,F(xiàn)在不少 LLM 網(wǎng)關(guān)還要求請(qǐng)求里帶api-key、trace-id這玩意兒根本塞不進(jìn)去。所以這時(shí)候有兩類選擇用原生fetch自己解析流請(qǐng)求頭管夠代價(jià)是解析邏輯、斷線重連、心跳保護(hù)全手寫用fetchEventSource它內(nèi)部用 fetch 實(shí)現(xiàn)自定義 header、POST body 都支持同時(shí)把 SSE 協(xié)議的上層語(yǔ)義補(bǔ)齊。我在這次改造里選的是fetchEventSource理由很簡(jiǎn)單——我們的服務(wù)端網(wǎng)關(guān)要求每個(gè)流請(qǐng)求都帶內(nèi)部api-key和request-id原生 EventSource 直接出局而項(xiàng)目里又要求快速交付手寫解析器的維護(hù)成本不低用一個(gè)成熟封裝更穩(wěn)妥。但正是這次選型讓一個(gè)問(wèn)題暴露出來(lái)fetchEventSource太好用了以至于讓我忽略了它內(nèi)部對(duì)“錯(cuò)誤響應(yīng)”和“連接中止”有一套自己的處理邏輯而這套邏輯在某些場(chǎng)景下和原生fetch的語(yǔ)義完全不一致。3. 真實(shí)踩坑過(guò)程一次 agent 預(yù)設(shè)加載失敗引發(fā)的排查3.1 現(xiàn)象復(fù)盤先還原一下我當(dāng)時(shí)的場(chǎng)景。項(xiàng)目里有一個(gè)“智能體預(yù)設(shè)列表”的接口/api/agentpresets/list用來(lái)給對(duì)話頁(yè)加載可選的 AI 角色。這不是個(gè)大模型流式接口而是普通參數(shù)列表接口。但當(dāng)時(shí)前端統(tǒng)一把這類接口從fetch切換成了fetchEventSource——因?yàn)槲姨煺娴匾詾椤凹热欢际亲?HTTP統(tǒng)一封裝組件最省事”。切換之后一連串接口開(kāi)始報(bào)錯(cuò)failed to fetch 無(wú)法加載 agent 預(yù)設(shè) client api: agentpresets/list failed: failed to fetch注意最后一次報(bào)錯(cuò)這是瀏覽器終端的原始信息翻譯過(guò)來(lái)就是fetch在請(qǐng)求還沒(méi)有拿到任何響應(yīng)頭之前連接就被中止了。因?yàn)閒etchEventSource的onopen回調(diào)只有在收到響應(yīng)頭之后才會(huì)觸發(fā)而這次請(qǐng)求連這一步都沒(méi)走到。我第一反應(yīng)是服務(wù)端掛了。于是用 Postman 直接打同一個(gè)接口200秒回?cái)?shù)據(jù)完整。再用 curl 打200一切正常。那么問(wèn)題就出在前端請(qǐng)求本身。3.2 排查鏈路我按下面這個(gè)順序排除寫下來(lái)給同樣踩坑的人參考第一層看請(qǐng)求是否真正發(fā)出。打開(kāi) DevTools 的 Network 面板在agentpresets/list請(qǐng)求上右鍵復(fù)制為 curl命令行跑一遍。如果 curl 能通說(shuō)明服務(wù)端、網(wǎng)關(guān)、SSL 都沒(méi)問(wèn)題。剩下的問(wèn)題集中在瀏覽器環(huán)境和請(qǐng)求庫(kù)。第二層查 CORS 和預(yù)檢。我們的接口帶Authorization和api-key自定義頭瀏覽器會(huì)先發(fā)一個(gè)OPTIONS預(yù)檢請(qǐng)求???Network 面板里是否有預(yù)檢請(qǐng)求預(yù)檢是否返回了正確的Access-Control-Allow-Headers這一步很關(guān)鍵因?yàn)閒etchEventSource內(nèi)部即使設(shè)置了 headers如果服務(wù)端沒(méi)放行這些自定義頭請(qǐng)求在預(yù)檢階段就被瀏覽器攔截了表現(xiàn)就是failed to fetch。這個(gè)坑非常經(jīng)典尤其是從 Postman 測(cè)不出問(wèn)題的情況下十有八九卡在這。第三層查代理層和網(wǎng)關(guān)是否對(duì)流式請(qǐng)求做了特殊處理。我們服務(wù)端有個(gè) Nginx 網(wǎng)關(guān)檢查proxy_read_timeout、proxy_buffering這類配置。如果proxy_buffering開(kāi)著SSE 流的響應(yīng)會(huì)被 Nginx 攢著不吐客戶端遲遲收不到第一個(gè)字節(jié)容易觸發(fā)表層超時(shí)。雖然這里報(bào)的是“預(yù)設(shè)列表”接口但網(wǎng)關(guān)是統(tǒng)一入口配置影響所有接口。第四層查 AbortController 與頁(yè)面生命周期。我們的對(duì)話頁(yè)在組件卸載時(shí)會(huì)調(diào)用ctrl.abort()取消未完成的流式請(qǐng)求。如果請(qǐng)求時(shí)序上組件先卸載、請(qǐng)求后返回那么 abort 信號(hào)會(huì)導(dǎo)致 fetch 以AbortError結(jié)束最終同樣表現(xiàn)為failed to fetch。這個(gè)在所有異步請(qǐng)求中都可能發(fā)生屬于經(jīng)典競(jìng)態(tài)。四層查完前三層都沒(méi)問(wèn)題第四層嫌疑最大。于是我打開(kāi) Network 面板盯著預(yù)設(shè)列表請(qǐng)求的 timing發(fā)現(xiàn) Grunt 一個(gè)巧合這個(gè)接口發(fā)出的時(shí)機(jī)和上一個(gè)流式請(qǐng)求 abort 的時(shí)機(jī)幾乎重疊。3.3 根因定位到這里真相就比較清晰了。我們的對(duì)話頁(yè)切換 agent 預(yù)設(shè)時(shí)會(huì)先abort()上一個(gè)流式請(qǐng)求再發(fā)起新的預(yù)設(shè)列表請(qǐng)求。而fetchEventSource有個(gè)重要特性它內(nèi)部維護(hù)的是同一個(gè)AbortSignal信號(hào)鏈。如果你在fetchEventSource的選項(xiàng)里傳入某個(gè)signal它內(nèi)部的所有重連嘗試都會(huì)復(fù)用這個(gè)信號(hào)。問(wèn)題出在我沒(méi)有為每次請(qǐng)求創(chuàng)建獨(dú)立的AbortController而是模板里復(fù)用了同一個(gè)。第一次請(qǐng)求 abort 后這個(gè) controller 的 signal 狀態(tài)變成了aborted接下來(lái)所有復(fù)用這個(gè) signal 的請(qǐng)求fetch 都會(huì)立即拒絕根本不會(huì)發(fā)出網(wǎng)絡(luò)請(qǐng)求。換句話說(shuō)fetchEventSource的signal一旦 abort 就永久失效它是“一次性信號(hào)”。而原生fetch遇到同樣的情況也一樣是被 abort 拉住——這不算 fetchEventSource 獨(dú)有的問(wèn)題但因?yàn)閒etchEventSource內(nèi)部消息循環(huán)和重連機(jī)制的存在這種“被 abort 拒絕”的請(qǐng)求其錯(cuò)誤信息里沒(méi)有明確的AbortError標(biāo)記而是被轉(zhuǎn)換成了TypeError: Failed to fetch所以排查時(shí)很容易誤判成網(wǎng)絡(luò)問(wèn)題。再進(jìn)一步看為什么這個(gè)報(bào)錯(cuò)會(huì)串到agentpresets/list這樣完全無(wú)關(guān)的接口上就是因?yàn)槲野淹粋€(gè)AbortController傳給了所有接口請(qǐng)求。表面上代碼是這個(gè)樣子的// 錯(cuò)誤示范所有請(qǐng)求復(fù)用一個(gè) controller const sharedController new AbortController(); async function loadPresets() { await fetchEventSource(/api/agentpresets/list, { signal: sharedController.signal, onmessage(msg) { /* 處理 */ }, }); } async function chatStream() { await fetchEventSource(/api/chat, { signal: sharedController.signal, onmessage(msg) { /* 處理 */ }, }); }一旦某個(gè)環(huán)節(jié)調(diào)用了sharedController.abort()后面再發(fā)的任何復(fù)用請(qǐng)求都不再有意義。這不是fetchEventSource的問(wèn)題而是我對(duì)“AbortSignal 是一次性狀態(tài)”這個(gè)底層語(yǔ)義理解不到位——所以我在標(biāo)題里強(qiáng)調(diào)這是一次“本質(zhì)區(qū)別”本質(zhì)不是 API 長(zhǎng)什么樣而是狀態(tài)語(yǔ)義。修復(fù)辦法非常簡(jiǎn)單每次請(qǐng)求都 new 一個(gè)獨(dú)立的AbortControllerasync function loadPresets() { const ctrl new AbortController(); await fetchEventSource(/api/agentpresets/list, { signal: ctrl.signal, onmessage(msg) { /* 處理 */ }, }); } async function chatStream() { const ctrl new AbortController(); await fetchEventSource(/api/chat, { signal: ctrl.signal, onmessage(msg) { /* 處理 */ }, }); }如果你真的需要在某個(gè)頁(yè)面級(jí)別統(tǒng)一取消所有請(qǐng)求也建議維護(hù)一個(gè) controller 集合而不是共用一個(gè)AbortController。每次請(qǐng)求創(chuàng)建獨(dú)立 controller頁(yè)面卸載時(shí)統(tǒng)一調(diào)用集合里的abort()。注意AbortSignal一旦進(jìn)入 aborted 狀態(tài)是無(wú)法恢復(fù)的。你沒(méi)法把同一個(gè) signal 取消后再?gòu)?fù)用。這是 web 平臺(tái)的固定語(yǔ)義跟庫(kù)無(wú)關(guān)。4. 避坑經(jīng)驗(yàn)與報(bào)錯(cuò)速查表4.1 選型建議什么時(shí)候用 fetchEventSource什么時(shí)候用原生 fetch這次踩坑之后我把“流式讀取”的選型標(biāo)準(zhǔn)重新梳理了一遍。沒(méi)有哪個(gè)方式是絕對(duì)正確的只有更適合你當(dāng)前場(chǎng)景的。場(chǎng)景推薦方式原因大模型對(duì)話需要 POST 自定義 header SSEfetchEventSource自動(dòng)解析事件、自動(dòng)重連、支持 POST 和 header后端就是標(biāo)準(zhǔn) GET SSE比如某些開(kāi)源消息推送原生EventSource瀏覽器原生能力不需要引庫(kù)天然支持自動(dòng)重連只需要非常輕量的單次響應(yīng)讀取不關(guān)心重連原生fetchReadableStream依賴少代碼可控涉及復(fù)雜的多遍流處理、事件類型多樣、需要精細(xì)控制每類事件fetchEventSource它的onopen/onmessage/onerror/onclose鉤子比原生fetch的裸流處理清晰得多項(xiàng)目對(duì)依賴包體積極其敏感原生fetch少一個(gè)運(yùn)行時(shí)依賴打包體積自然減小我個(gè)人的經(jīng)驗(yàn)是如果你在做 AI 對(duì)話類功能第一選擇就是fetchEventSource。它讓你把精力花在業(yè)務(wù)邏輯上不用每次糾結(jié)字符串切拆和心跳處理。但代價(jià)是——它是個(gè)封裝層你踩的坑往往不是它本身不夠好而是你沒(méi)搞懂它背后依賴的底層語(yǔ)義比如 AbortSignal 的一次性特性、自動(dòng)重連可能帶來(lái)的重復(fù)數(shù)據(jù)問(wèn)題。4.2 常見(jiàn)報(bào)錯(cuò)速查表把這次項(xiàng)目里遇到的和網(wǎng)上高頻出現(xiàn)的問(wèn)題整理成了一張速查表按failed to fetch相關(guān)錯(cuò)誤類型和排查路徑給出來(lái)報(bào)錯(cuò)關(guān)鍵詞可能原因排查順序failed to fetch跨域預(yù)檢失敗、服務(wù)端未響應(yīng)、連接被 abort、網(wǎng)關(guān) buffer1. Network 復(fù)制 curl 驗(yàn)證服務(wù)端 2. 檢查 OPTIONS 預(yù)檢 3. 檢查 body 是否被 abortfailed to fetch dynamically只用于動(dòng)態(tài)導(dǎo)入和運(yùn)行時(shí) fetch 無(wú)直接關(guān)系但報(bào)錯(cuò)前常伴隨網(wǎng)絡(luò)不可達(dá)或單頁(yè)應(yīng)用資源加載失敗檢查靜態(tài)資源 CDN 可達(dá)性、路由目錄是否正確agentpresets/list failed: failed to fetch請(qǐng)求被 AbortSignal 攔截、或者自定義 header 未通過(guò) CORS重點(diǎn)查 AbortController 是否被復(fù)用、預(yù)檢響應(yīng)頭connect econnrefused服務(wù)端端口未監(jiān)聽(tīng)、防火墻攔截、服務(wù)未啟動(dòng)curl -v看握手過(guò)程檢查服務(wù)日志failed to fetch version from claude.ai這是某些工具在檢測(cè)網(wǎng)絡(luò)或版本源時(shí)的通用錯(cuò)誤多數(shù)和代理/證書/網(wǎng)絡(luò)隔離相關(guān)換網(wǎng)絡(luò)源看是否能通檢查系統(tǒng)代理設(shè)置git fetch或git pull很慢緩沖區(qū)容量、協(xié)議差異、DNS 解析慢git config --global http.postBuffer調(diào)大檢查https.sslVerifyVS Code 服務(wù)器failed to fetch遠(yuǎn)程環(huán)境下載 server 包失敗手動(dòng)下載vscode-server-linux-x64.tar.gz放到指定目錄這里必須強(qiáng)調(diào)failed to fetch是前端最常見(jiàn)但又最沒(méi)有信息量的錯(cuò)誤。小技巧是在onerror回調(diào)里加一層錯(cuò)誤轉(zhuǎn)換把error.name和error.message都打出來(lái)。如果error.name AbortError說(shuō)明是主動(dòng)中止如果error.message含NetworkError說(shuō)明是連接層面的問(wèn)題如果是TypeError: Failed to fetch但實(shí)際請(qǐng)求沒(méi)有發(fā)出大概率是 CORS 或 signal 問(wèn)題。這一手能在你上 DevTools 之前先快速縮小范圍。另外一個(gè)小技巧如果你需要排查“請(qǐng)求到底有沒(méi)有發(fā)到服務(wù)器”可以在組件里臨時(shí)給fetchEventSource加一個(gè)onopen回調(diào)onopen(response) { console.log(HTTP 狀態(tài), response.status, 說(shuō)明服務(wù)端已收到請(qǐng)求); }只要onopen執(zhí)行了說(shuō)明服務(wù)端已返回響應(yīng)頭問(wèn)題不在“服務(wù)端沒(méi)收到請(qǐng)求”。如果onopen一直不執(zhí)行那就是請(qǐng)求沒(méi)到服務(wù)端優(yōu)先查 CORS、DNS、證書、signal。這個(gè)“響應(yīng)頭是否返回”的判斷思路能把你從“服務(wù)端到底通沒(méi)通”的泥潭里拉出來(lái)。4.3 一個(gè)額外的坑重連造成的重復(fù)數(shù)據(jù)除了 AbortSignal 的坑fetchEventSource自動(dòng)重連機(jī)制還會(huì)帶來(lái)另一個(gè)問(wèn)題斷線重連后消息可能重復(fù)。比如你調(diào)大模型接口流式返回了一部分內(nèi)容后網(wǎng)絡(luò)閃斷fetchEventSource會(huì)自動(dòng)重連并重新發(fā)送請(qǐng)求。如果服務(wù)端沒(méi)有做“斷點(diǎn)續(xù)傳”或者“請(qǐng)求去重”那前端就會(huì)再次收到從第一條開(kāi)始的內(nèi)容界面上就出現(xiàn)了重復(fù)的渲染。我當(dāng)時(shí)調(diào)的是一個(gè)內(nèi)部 LLM 網(wǎng)關(guān)網(wǎng)關(guān)并不緩存歷史輸出重連后從零開(kāi)始生成前端渲染里就出現(xiàn)了兩遍回答拼接的詭異效果。這類問(wèn)題的處理思路有兩個(gè)方向前端做消息冪等靠event.id或遞增序號(hào)重復(fù)內(nèi)容直接丟棄重連后讓用戶手動(dòng)確認(rèn)“是否繼續(xù)上次回答”而不是無(wú)感重放。對(duì)于 AI 對(duì)話這種場(chǎng)景自動(dòng)重連不總是好事。服務(wù)端生成狀態(tài)已經(jīng)在第一輪請(qǐng)求里消耗過(guò)一遍了重連不是在“繼續(xù)生成”而是在“重新生成”此時(shí)自動(dòng)重連反而制造混亂。所以我后來(lái)把onerror改成了手動(dòng)控制onerror(err) { // 打印原始錯(cuò)誤 console.error(流產(chǎn)生錯(cuò)誤, err.name, err.message); // 如果是 AbortError說(shuō)明是用戶/組件主動(dòng)中止不重連 if (err.name AbortError) { throw err; } // 其他錯(cuò)誤默認(rèn)自動(dòng)重連這里不返回具體值即可 // 如果你希望手動(dòng)控制直接 throw 出去 throw err; }實(shí)際項(xiàng)目里我會(huì)區(qū)分錯(cuò)誤類型來(lái)決策是否重連。主動(dòng) abort 的重試毫無(wú)意義網(wǎng)絡(luò)抖動(dòng)且服務(wù)端支持冪等時(shí)自動(dòng)重連才值得開(kāi)。這樣的決策能力是裸fetch和fetchEventSource都很難替你做主的都需要你對(duì)業(yè)務(wù)流有清晰判斷。5. 寫在最后的個(gè)人體會(huì)這次踩坑讓我最深的感受是凡是封裝良好的庫(kù)都會(huì)在“易用性”和“可控性”之間做選擇。fetchEventSource把 SSE 流式處理中繁瑣的部分——事件解析、重連、打開(kāi)關(guān)閉回調(diào)——全封裝了這是它的價(jià)值但這也意味著你對(duì)底層fetch行為、AbortSignal 語(yǔ)義、甚至是 HTTP 連接生命周期的理解成了你能不能用好它的關(guān)鍵。踩過(guò)幾次坑之后我現(xiàn)在寫流式請(qǐng)求代碼時(shí)一定會(huì)遵循幾個(gè)鐵律每個(gè)AbortController只服務(wù)一個(gè)請(qǐng)求絕不復(fù)用onerror里至少要打一行錯(cuò)誤日志包含error.name和error.messageonopen回調(diào)里記錄 HTTP 狀態(tài)碼方便日后判斷問(wèn)題在“服務(wù)端”還是“連接”服務(wù)端要支持冪等時(shí)再開(kāi)自動(dòng)重連否則必須在業(yè)務(wù)層做去重依賴包升級(jí)后重新過(guò)一遍openWhenHidden、signal、onerror的默認(rèn)行為是否變化。如果讓我對(duì)正在做 AI 應(yīng)用、或者準(zhǔn)備做流式渲染的朋友說(shuō)一句掏心窩的話別急著把所有接口都換到fetchEventSource它不是萬(wàn)能的也別因?yàn)橐淮蝔ailed to fetch就退回原生 fetch那個(gè)坑更大。先想清楚你的業(yè)務(wù)究竟需要什么控制粒度再?zèng)Q定用哪把工具。最后再分享一個(gè)我在排查任何failed to fetch時(shí)的定式先看error.name再看onopen是否執(zhí)行然后復(fù)制 curl 驗(yàn)證服務(wù)端最后檢查 CORS 預(yù)檢和 AbortSignal 狀態(tài)。按這個(gè)順序走目前我還沒(méi)遇到定位不出來(lái)的failed to fetch。希望這篇踩坑記錄能幫你少熬一個(gè)夜。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲成人性爱网站在线播放| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 一起草精品人妻| 最新亚洲黄色免费电影| 精品无码久久久久久久久果冻糖心| 久久精品熟女亚洲AV麻豆软件| 天天看片麻豆| 天天综合网AV91| 国产精品肉丝自拍| 五月天综合| 欧美日韩色综合网| 亚洲一区日韩精品中文字幕| 五月天婷婷在线看| 国产精品不卡av免费在线观看| 欧色网址| 国产美女高潮视频| 欧美丝袜美女电影一二三四区| 久久大香蕉手机高清| 久久精品店| AV和黑人在线播放| 久久久精品中文字幕爱豆| 亚洲天堂2020| WWW操逼| 美女91网站| 欧美亚洲首页| 91 偷| 男人的天堂久久狠| www.av不卡中文字幕| 精彩国产视频播放1区2区| 天天综合在线4| 久久午夜伦| 亚洲熟妇自偷自拍另欧美| 欧美强奸乱| 国产精品久久久三级无码| 久草免费在线视频| 激情婷婷五月天| 亚洲熟女中文字幕在线| 每日更新AV| 亚乱色| 9色国产精品一区粉嫩| 久久久久九九九| 日本精品一区二区不卡| 97啪啪| 欧美大香蕉久| av婷婷色婷婷色六月| 黄色av片三级三级三级免费看| 色婷婷激一区二区三区| 情色AV电影| 欧美色婷婷| 99综合| 亚洲欧美一区二区三区在钱蜜桃 | 天天夜夜久久| 亚洲污污网站| 国产精品粉嫩福利在线| 97干在线| 高跟丝袜AV专区国产| 粉嫩在线一区二区懂色| 中文字幕五区| 蜜桃视频精品一区二区三区| 十八禁电影伊人网| 久久精品无码专区| 国产精品秘 福利姬在线观看| 欧美很很操视频| 伊人久久艹| 青娱乐 成人娱乐在线| 日韩精品99久久久久久中文字幕| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 超碰久超碰久| 蜜乳成人AV| 欧美熟女操屄| 九九热超碰97亚洲最新香蕉| 熟妇女伦乱视频视频| 天堂综合网| 国产白嫩漂亮KTV在线| 亚欧Av| 嗯嗯啊啊啊好舒服| 人妻少妇精品无码专区二区密桃| 男插女青青影院| 操逼视频亚洲| 好湿好紧好爽 视频| 日本精品九九九| 亚洲综合在线第一页| 岛国激情视频软件| 999久久久九| 亚洲综合 欧美| 91亚洲色图| 手机在线人成免费视频| av午夜玫瑰| 特污精品女优骚货黄色视频在线免费观看| 日本欧美一区二区三区免费| 大香蕉99热| 亚洲成人贴图| 婷婷亚洲综合| 涩亚洲欧洲| 超碰精品国产无码| 久久亚洲影院一区二区| 91性网| 久久香蕉综合一本到3atv| av午夜玫瑰| 丰满人妻一区二区三区免费| 99爱爱| 国产免费一区| 成人三级片无码| 经典丝袜一区| 亚洲欧美setu| 约操熟妇| 超碰偷拍| 国产精品青草综合久久| 四虎影视国产精品| 国人欧美精品一区二区| 久草久日| 一级免费啪啪片| 中出人妻中文字幕91在线| 北约熟女超碰| 日日噜噜夜夜久久亚洲一区二区 | 韩国黄色片精品久久久| 精品无码产区一区二| 欧美激情视频在线一区| 色999偷自拍拍| 日韩av在线精品观看| 91亚洲黑人| 91综合网站| 97干日韩| 久久久久久久久久va| 色999偷自拍拍| 中文字幕欧美丝袜07资源| 99精品热| 18禁看网站一区| 久久夜嗨| 日本精品高清一二区一本到| 大香蕉2017| 精品国产乱码久久久久久口爆网站 | 最近的最新的中文字幕视频| 91超碰在线观看| 亚洲天堂 视频你懂的| 91老熟女91老女人| 水澄无码AV| 亚洲啪啪综合?v一区综合精品区| 欧美亚综合色图| 免费观看性欧美一级| 人人妻人人色| 亚洲精品日日夜夜52| 欧亚 另类 久| 嗯……啊…嗯嗯…啊…好舒服| 欧美性xxxxx狂欢| 青青操在线亚洲视频观看欧美在线| 1人人看人人摸人人操| 欧美性五月| 玖玖婷婷五月天| 精品无码久久久久久久久果冻糖心| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 欧美日韩操逼嗦吊| 另类TS人妖一区二区三区| 日韩无码久久熟女一级片| 啪啪91| 欧美999| 亚洲综合贴图91 | 精品视频一区二区| 亚洲狼狼干综合1| 国产精品探花在线| 青娱乐av在线| 国产精品久久久三级无码| 蜜臀久久99精品久久久久久无删减| 亚洲一区二区三区麻豆传媒| 五月色网| 欧美一区二区福利在线| 亚州男人天堂| 后入式999| 国产综合久久久鬼色| 国产AV高清AV无码| 伊人久久大香线蕉无码| 在线综合网| 懂色av中文字幕一区二区三区天美| 久久久婷婷| 国产区性爱在线视频秋霞豆| 成人国产视频在线观看| 人妻精品一区二区| 中文字幕第7页| 久久综合久色欧美综合狠狠 | 亚洲AV永久无码精品成人调教| 国产夜夜操| 99久久综合网| 亚欧Av| 国产乱伦视频污| 久久精品国产亚洲粉嫩| 久久久久久久综合,国产| 色九九九| 色九九九| 曰本精品久久久| 人妻天天夜夜爽一区二区| 中国探花熟女| 久热99999| 99热导航| 九九热超碰97亚洲最新香蕉| 操b网站亚洲无码| 熟女人妻久久中文字幕一二区| 国产午夜无码片在线观看影视 | 久久久久久久久久久久黄色 | 亚洲少妇在线观看| 一起草三级AV电影在线观看| 色色九区| 97精| 人妻三级在线中文字幕| 亚洲精品97| 国产一区在线播放| 国产一区二区免费福利片| 久草新在线| 日韩图色| 日韩国产精品人妻无码久久久| 国产路线专区| 免费视频一二三区| 黄片免费视频2019| 近亲乱伦一区二区| 高清无码国产亚洲| 狠狠爱综合网| 人人手机欧洲亚洲国产人妻| 国产欧美日韩臀| 区二区亚洲婷| 欧美日韩系列| 神马午夜久久| 人人看黄色视频| 18禁无码永久免费无限制| 国产高清精品一区二区三区毛片 | 伊人久久88国产女| 射欧美综合| 劲爆欧美人妖三区91| 男人的天堂日本东京热| 密臀在线视频| 午夜福利精品| av大香蕉| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 神马久久午夜| 乱伦AVxx| 日韩精品99999| 偷拍亚洲高清图片| 青青草国产一区二区三区| 久久精品国产97欧美精品亚洲 | 女人喷水视频在线观看| 久久九九99| 久草资源欧美在线视频| 久久中文字幕女同性恋一区| 久久久久久久精| 男女日B国产| 天天搞在线综合网| 无码色| 日韩中文字幕av在线播放| 老司机午夜精品福利视频一区二区| 亚洲精品97p| 凹凸精品熟女在线观看| 国语精品内射在线观看| 91欧美成人色站| 国产精品白丝AV| 国产 日韩 欧美一区| 日韩无码黄色片| 嗯啊不要啊在线| 91在线/欧洲| 操国产逼| 日韩国语字幕| 综合另类| 在线不卡视频| 东京热伊久| 久久久久久网址| 99碰碰| 色天堂综合| 欧美色图 色综合图| 亚洲国产尤物yw在线观看| 日本一级一级一级一级| 操少妞在线视频| 日韩欧美福利视频看看| 黄色网址久久精品欧美喷水| 91 偷| 国产美女高潮叫床视频| 99黄页网站| 日本视频在线中文字幕| 久热伊人99re| 天天亚洲| 欧美成人9797| 欧美 亚洲精品首页| 一起草日韩| 色第一页| 天天躁日日躁AAAAXXXX国产 | 国产搭汕a级片| 国产一级操B视频| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 亚洲熟女乱综合一区二区三区| 亚洲在线91| 精品久热| 九九九九久久久久| 九九十八精品| 亚洲图片激情综合另类| 久久久久密臀一区二区| 三级特黄60分钟播放| 久草色悠悠在线视频| 成人免费性爱视视| 久久有码| 国产精品干干干| 欧美操逼视频二区| av在线一区二区三区| 97在线观看免费视频l| 91香蕉视频在线观看免费| 亚洲情色1区| 国产精品一区二区亚洲人成毛片| 樱花草社区www中国| 日韩av不卡在线看| 老熟乱一区二区三区四区| 无遮挡猛进视频免费无限观看| 2020中文字幕在线| 激情五月天色播| 97国产精品视频| 色女网日韩| av强奸乱轮| 毛片麻豆91糖心精品毛情片| 99色色网| 欧美精品一区二区少妇免费A片 | 欧差乱伦二三| 亚洲天堂人人妻| 亚洲欧洲日韩国产自在线| 91九色丰满高潮| 丁香五月av| 中文字幕天堂在线| 一二三四视频在线社区中文字幕| 综合五月婷婷| 99久久亚洲精品无码毛片潘甜甜| 97网址97| 韩国女主播青草福利视频| 影视综合无码少妇| 亚洲图片小说欧洲| 啊操爽品善一区二区三区| jizzjizz欧美| 91美女视频| 亚洲男人综合网| 亚洲操人| 亚洲蜜乳av| 91色插| 试看福利| 亚洲色图加勒比| 国产精品久久伊人| 自拍偷拍第26| 久九九九九九九九热| 91九色丨国产丨爆乳| 亚洲色图日韩精品| 伊人网青青| 国产在线激情| 熟妇激情| 国产乱码精品久久久久久| 亚洲无码色| 天堂俺去俺来也www久久婷婷| 精品十八在线观看| 国产第11页| 亚洲欧美九九| 精品国产精品一区二区| 国产精品成人无码a v毛片| 久久在肏| 97在线欧| 久久久久久久久久久久九| 久久久一区二区三区四曲免费听 | 国产久久日韩网站导航| 五月丁香| 日本久久99| av在线免费一区二区| 亚洲天堂男人| 熟妇一区二区| 人妻激情视频| 久久精品操| 亚洲一区制服诱惑| 密臀成人视频久久久| 久久爽爽精品| 少妇三P| 亚洲国产一区二区三区在线| 男人天堂2019亚洲| 乱精品一区字幕二区| 亚洲精品人妻吞精av| 亚州免费啪啪视频| 亚洲高清无码在线桃色| 不卡一区二区日本视频| 亚洲 一区二区 自拍| 免费一级性爱久久| 日日插夜夜| 日熟女| 国产一区二区在线播放量| 国产精品久久久吖| 中文字幕一区二区日韩网| 久久性爱视频免费看| 极品色| 色色毛片| 精品成人无码| 婷婷AV一区二区三区| 亚洲综合中文字幕有码 | 97精品一区| 久操| 少妇久久久久| 欧美综合国产精品久久丁香| 日韩在线性爱免费视频| 精品然女一区二区| 日本免费亚洲欧美| 婷婷五月天伊人| 日韩欧美视频青青| 999久久久久久久精| 色婷婷aV一区二区三区麻豆综合| 日韩少妇丰满亚洲| 九色 蝌蚪 熟女自 | 亚洲欧美日韩免费电影| 美国aaaaa一级黄片| 蜜桃av综合网发布| 尻女朋友一夜| 素人无码中文字幕| 亚洲AV永久无码精品成人调教| 男人天堂导航| 丰满美女一级毛片在线播放| 久久精品亚洲成a人天堂| 狠狠综合| 欧美精品偷拍| 噜噜噜亚洲精| 91东京热男人的天堂| 金莲网址| 欧美AB在线观看| 91强在线播放| 青娱乐91| 欧洲成人性爱视频| 尤物av网站| 天天天天做夜夜夜夜做| 欧美日韩色| 成人性爱AV在线免费观看| 国产又粗又长又爽又色| 亚洲人在线| 天天干夜夜肏| 永久免费av无码网站国产app| 熟女字幕| 熟女自慰久久久| 欧美亚洲中文字幕| 免费一级a毛片久久久久久鸭绿欲| 亚欧高清在线| 91丝袜激情在线| 久久久久久久久久久久色网| 精品人妻av在线播放| 视频二区美腿丝袜制服人妻欧美| 97精品网站| 精品人妻免费观看| 91 刺激在线| 九热超碰| 四虎国产精品永久地址入口| 午夜呻吟欧美| 夜夜欢天天干| 去干网最新版| 天天拍天| 国产一级特黄大片处女| 欧美色图亚洲色图成人在在线| 少妇蹲下买菜露大唇0| 在线观看一级α片刺激高潮视频| 一道本久久棕合爱| 麻豆精品.欧美精品.日韩精品.| 国内亚洲精彩视频在线| 蜜桃久久久久久久| 翔田千里A片一区二区| 亚洲激情久久| 超碰97国产欧美| 国产精点久久久成人| 青青草色插素人| 天天上日日上日韩精品| 中文字幕一区二区三区人妻少妇在线| 天天干18禁| 亚洲色啪| 亚洲熟女av中文字幕| 色色婷婷五月天| 亚洲日韩97| 亚洲综合中文字幕有码| 嗯~啊~快点 死我视频免费看网站| 日韩欧美大片免费高清啪啪| 九九热五区| A片A5445444| 啊啊啊啊啊好大好舒服想要| 中文人妻av高清一区| 91天射| 免费看黄视频亚洲网站| 久久久久久免费电影| 五月天婷精品激情| 0755午夜福利视频| 精品免费一区二区三区在线亚洲人成| 黄色AV免费| 一区二区三区男女操逼黄色小电影| 大肥女高潮bbwbbwhd视频| 久久婷婷色综合一区二区三区| 久久男人的天堂| 肥臀熟女福利视频一区二区| 成全在线观看免费观看| 999久久久久久久久| 丁香五月激情婷婷| 亚洲日韩在线a不卡99精品| 啊操爽品善一区二区三区| 天天做日日做| 免费视频观看60秒| 欧洲无码一区二区| 操逼日批| 亚洲区 欧美区| 久草综合京东| 成人亚欧免费视频| 国产成人五月天丁香花| 人妻一区二区三区| 久久香蕉综合一本到3atv| 色区97| 91色综合激情| 国产精品国产拍高清AV| 9色国产精品一区粉嫩| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 动漫爆乳3D奶水一区在线观看| 美女性91| 国产少妇高潮| 国产精品天美传媒| 国语对白在线播放视频| 91人妻少妇| 伊人久久亚洲色欲综合网站| 人人乐大香蕉| 国产97视频免费观看| 91亚洲欧洲| 视频二区熟女人妻| 亚射在线| 色久综合| 操比国产| 人人操人人插人人摸人人干| 91美女视频在线观看| 嫩草影院永久在线制服丝袜| 97天天爽| 欧美丰满熟妇XXXX性ppX人交| yaouchengrenav| www.人人摸在线视频| 色情亚洲日本成人| 国产在线76页| 视频分类 国内精品| 青青免费在线视频一区| 天天射日日干| 99超碰网| 91日日夜夜| 欧美日本天堂| 操我啊啊啊啊啊| 色综合五月天| 国产激情在线| 国产精品自在自拍视频| 一本久道在线综合视频| 精品无码一区二区三区| 97超碰站| 国产高清成人免费视频| 亚洲欧美日韩不卡人妻| 亚洲成成熟女人综合一区二区| 97视频新免费| 中文熟女五十乱码在线| 极品AV网站在线观看| 91熟女综合| 久久伊人网视频一区二区三区| 国产精品老熟女一区二区| 中文字幕在线免费观看视频| 99热婷婷| 午夜免费视频1000| 青青草中文-久久青草精品一区二区三 | 亚洲天堂男人在线| 五月婷婷六月激情| 99在线免费观看| 男人的天堂亚洲| 东京热亚洲一区二区| 性爱视频久久| 极品色社| 97人人爱人人做人人乐| 日本啊啊啊啊啊视频| 欧洲乱码视频| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 97爱欧美| 亚洲成人妻日韩在线| 无码男人天堂| 亚欧美综合| 91天美免费| 91n欧美| 国产精品人妻无码久久久互動交流 | 男啪女色黄无遮挡免费观看| 国产综合日韩伦理| 超碰国产精品久| 蜜乳AV一区二区三区四| 日本在线激情一区二区三区 | 免费视频97| 三级日本一区二区三区| 午夜超爽| 99精品在线播放| 殴美牲| 国产精品。| 一摸二插三插| 99无码| 久久91视频| 日本污ww视频网站| 欧美最婬乱婬爆婬性视频 | 午夜爽爽爽在线观看永久入口姬片| 囯产乱伦一区二区三女 | 日本操逼无码| 欧美日韩一区二区三区四区蜜桃| 91蜜桃婷婷狠狠久久综合9色| 亚洲天堂性爱| 中国的操老妇女| 友优传媒精品在线一区二区| 国产精品原创巨作?v网站| 围产精品一区二区三区视频播放| 亚州国产精品乱| 99热精品国产| 欧美激情内射| 亚洲免费成人在线高清无码视频| 久久激情五月| 97精品97| 国产精品久久久 | 丝袜 亚洲 偷拍| 久久久久78| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 精品久久久亚洲AV成人网站| 国产亚卅97| 可乐操亚洲蜜911| 日本十八禁免费看污网站| 天天爽天天操| 久久中文字幕女同性恋一区| 国产极品粉嫩馒头一线天av| 激情五月综合网| 九九九九免费视频| 成人性爱AV在线免费观看| 久久九九综合| 9 1超碰九色| 精品中文字幕第一页| 国产精品天美传媒| 天堂综合网| 在线人人人人人人精品超| 久久111| 搡老女人老91妇女老熟女| 国模吧 一区二区三区| 综合97亚洲| 黑人美精品 A片| 天天影视激情欧美| 久操电影| 99国内精品| 久久精品—区二区三区内射| 9久热| 久艹免费| 色五月婷婷网| 亚洲综合网91| 久久女人一区二区三区| 欧美亚洲特P| 国产精品老师| 欲香欲色综合天天伊人| 99九九精品| 欧美视频一区二区三区| 欧美日韩性爱视屏免费看了| 999久久芭蕾| 中文字幕日本久久| 99在线精品观看视频中文| 一区三区啪啪| 久久久999国产精品| 手机看片1025| 国产91 丝袜在线播放 | 999九九精品| 偷拍自拍在线视频观看| 国产人妻精品一区二区三区秋霞 | 黑人中出21连凳花野真衣| 中文AV制服乱伦| 秋霞男人网| 天天操人人操狠狠插| 天天摸夜夜操视频| 婷婷丁香五月天综合东京热| 欧美久久人体| 女优免费一区二区永久| 一级黄色性爱裸体视频| 神马午夜久久久| 日韩亚洲精品一区二区| av日韩中文字幕| 五月激情影院| 欧美亚洲自拍另类人妻| 神马久久69| 欧美性爱精品一区二区| 91亚洲人| 国产熟妇一区二区| 国产AV高清AV无码| 中文久久久| 欧美亚州综合图片| 色色色999| 亚洲AV麻豆Aⅴ无码电影一| 一区二区国产视频在线观看| 丁香九月激情啪| 亲子敌伦对白在线播放| 91天射| 婷婷97| 亚洲日本激情| 九九热精品视频六| 亚州精品丝袜-不卡成人免费| 中文字幕一区二区韩| 東南亚性呦成人伦理资源在线视频| 男人的天堂在线有码| 一本久道在线综合视频| 欧美天天综合网版| 动漫av中文| 国产精品交换一区二区| 欧美日韩国产黄色片| 亚州性色| 日韩av情韩国爱禁区av一区二区 | 亚洲国产精品成人综合| 蜜桃香蕉久草精品在线| 五月天综合网| 天天干,夜夜爽| 久久亚洲AV无码专区国产精品 | 国产欧美日韩女同性恋ww喷水精品| 91深夜夜| 国产精品电影大全| 久热精品在线| 久久久久久久久久久久九| 人妻天堂综合网| 思思在线免费视频| 18禁无码永久免费无限制| 97碰碰色| 97国产精品在线观看| 色婷婷婷五月天激情四射| 91校园春色长篇| 伊人黄色视频免费观看| 97资源视频| 91丝袜在线观看| 99热精品在线观看| 99在线啪| 亚洲诱惑| 91九九九逼| 偷拍欧美激情| 五月天婷婷欧美三区| 日韩一级片在线看| 国产三级多多影院2022国产AA一级毛片无码 | 亚洲二区精品在线观看 | 在线亚洲精品久久久| 人妻夜夜爽天天爽麻豆三区网站| 国产日韩欧美三级片| 欧美经典一区二区三区| 亚洲激情在线观看一区| 人人爱人人乐人人操| 射综合网| 综合第一页| 欧美黄业| 91啪啪| 免费操逼91| 国产精品96久久久久久| 99999亚洲| 2017天天插| 好爽视频在线观看视频| 国产深夜福利| av黄图片在线观看| TS人妖另类精品视频系列| 中文视频在线观看| 欧美999| 97无码视频在线播放| 91在线免费精品视频| 在线视频免费观看午夜| 白丝被操91| 日本操色导航| 欧美色性爱| 国产欧美亚洲精品a第2页| 人人射人人操人人摸| 九九性爱网| 99热91| 天美av在线观看| 日韩精品人妻系列无码天堂| 久久精品视频在线观看| 97就爱干| 啊啊啊啊好疼| 欧美亚洲天堂| 亚洲图片色图欧美另类| 无码精品一区二区三区潘金莲| 亚洲AV秘 精品久久老牛影视| 黄色小视频日本txt| 日韩精品一区的| 97久久久久久久精| 日韩精品第3页| 超碰综合97在线| 久艹日日日| 免费?级毛片无码?∨蜜芽试看| 色婷婷激一区二区三区 | 日韩精品午夜操呦呦不卡影院| 91少妇人妻| 国产视频一区二区三区在线免费观看| 国产精品婬乱一级毛片彝族| 夜夜操狠狠操| 91中文精品日韩欧美在线| 久草线上视频免费看| 国产97色在线| 爽极品影院| 蜜桃臀av在线观看| 午夜精品久久久久| 欧美色图片色哟哟| 无码137片内射在线影院| 日本性爱少妇| 99自拍B亚洲 | 能看的av| 中文久久96| 91天堂网| ?亚洲伊人伊成久久人综合网| 亚洲欧美激情另类色图| 嗯嗯啊啊日韩精品| 国产色产精品在线观看| 成人网站 免费观看| 国产免费大片| 2017天天操天天日| 精品国产一区二区三区四区在线看 | 久久亚洲色图中文字幕| 超碰97色| 99操逼| 日韩欧美天天爽爽爽天天爽爽| 日韩人妻丝袜中文字幕| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美中文字幕男人天堂久久精品| 蜜桃午夜视频一区二区| 操婢日韩| 中文字幕91综合| 91蜜臀人妻中文字幕在线| 影音先锋少妇| 人妻夜夜爽天天爽麻豆三区网站| 日日骚av| 免费强奸av| 婷婷精品国产一区二区三区日韩| 亚洲?V高清一区二区三区尤物| 亚洲精品中文字幕一区在线视频| 国产精品suv一区| 最新亚洲黄色免费电影| 深爱激情五月天| 色原狠狠天天天| www国产天美久久久| 青青草大香蕉在线视频| 欧美片第一页| 日韩素人无码一区二区三区三州| 久久久久久99999国产精品| 久久精品国产亚洲AV无码做| 久久久熟妇熟女国产| 婷婷伊人五月| 国产性感骚丝袜在线| 亚州综合网| 日本三级久| 清纯唯美亚洲综合| 色五月婷婷麻豆在| 亚洲熟女人妻中文字幕一区二区| 丁香色五月 97干| 久艹视频在线| 亚洲精品视频在线播放| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日韩紧密久久| 性色AV蜜色av色欲av| 91美女视屏| 国产在线观看一区二区三区| 91在线视频免费中出| 成人毛片免费| 2019AV天堂| 黄色激情电影在线观看| 日日夜夜草草草| 岛国大片在线观看网站入口| av天天在线| 殴美在线AⅤ| 亚洲双插| 天堂精品在线| 国产真实子伦对白| 九X超碰| 上海一级黄片| 人人操超碰在线| 天天爽天天操| 亚洲无码精品AV久久久| 青青草色情网站视频| 日本操逼二区| 中文字幕乱妇免费视频| 91ise欧美| 久久精品国产亚洲妲己影视| 亚洲天堂日本| 色综合色综合网| 91天天| julia中文字幕在线观看| 白嫩国模丰满一二三区| 亚洲无码一区成人免费午夜| 国内精品不卡无毒99999| 91精品亚洲内射孕妇| 经典丝袜一区| 婷婷五月天社区| 精品久久久久久AV无码| 91色s| 久久熟女人| 丰满人妻无码一区二区三区| 欧洲视频在线| 欧美熟女妇同| 99ri视频| 久久精品日韩| 密臀视频三区免费网站| 欧美情色贴图| 天天综合网站| 人人操人人干网页| 国产999精品久久久| 少妇69中文| 五月丁香色婷婷| 高清无码在线播放网站| 啊啊啊啊免费视频| 91强在线播放| 亚洲精品819| 黑人精品成人一区二区三区 | 久久久一级| 操逼操逼逼操操逼91| 97爱综合| 亚洲精品熟妇1区2区3区。| av午夜玫瑰| 91黑丝露脚| 中文字幕狠狠玩| 国产极品粉嫩馒头一线天av| 青青操在线视频| 91强在线播放| 中文字幕少妇色| 亚洲麻豆精品二区三区| 色成人Www精品永久观看| 又粗又长又大国产不卡| 久久久一区二区三区麻豆| 亚洲色丰满少妇高潮| 人人手机欧洲亚洲国产人妻| 日本三级中国三级99人妇网站| 手机在线中文字幕国产| 丁香色狠狠色综合久久小说| 无码粉嫩白虎一线天b区| 亚洲啪啪啪啪视香蕉| 日韩99神马视频片| 台欧久久精品视频| 长长久久88视频| 无码自拍SM| 免费簧片在线观看| 四虎影视永久在线免费| 四虎午夜影院| 欧美日韩大香蕉| 超碰欧美| 日本一区二区中文字幕久久| 青青草好吊色| 久久久久久久91| 欧美亚洲天天| 天天躁日日躁狠狠狠躁| 校园春色美腿丝袜 | 亚洲AV色图一区| 黄色十八禁| 国产1727欧美| 亚洲性猛| 日本最新1区2区3区| 九一性生活免费视频| 亚州色国| 91精产一区二区三区| 人妻内射一区二区在线视频| 神马久久啊啊| 久久99草| 蜜乳av一区二区三区| 欲女人妻性色av| 91精品婷婷国产综合久久| 日本天堂在线播放| 97日韩欧美亚洲| 春色91| 91另类| 91看黄片| 99精品欧美一区二区三区桃色| 精品少妇人妻av久久免费| 国产无马av| 97 国产精品| 97视频7| www.一本大99| 无码99| 色香色欲天天综合网天天来吧 | 六月丁操逼| 美女被艹尤物视频| 懂色天天爱天天日天天射天天澡| 91人妻最真实刺激绿帽| 天堂精品小草| 亚洲综合中文字幕有码 | 夜夜国产一区| 啊啊啊啊好疼视频| 欧美在线电影| 蜜臀一区二区三区在线| 中文字幕乱码人妻二区三区| 天天干天天操天天干天天操| 97干在线| 国产精品91ai| 茄子社区国产精品| 四虎精品一区二区| 日韩黄片视频试看| 亚洲成人免费在线| 色九九九| 久久精品国产97欧美精品亚洲| 欧美少妇色图| 亚洲一曲日韩精品| 另类视频在线| 国产白领连续中出在线播放| 青草伊人久久| 天天上日日上日韩精品| 欧美熟女操屄| 国产一区二区三区不卡手机在线| 亚洲伊人久久精品影院| 欧美第二页| 免费强奸av| 在线人妻熟女一区二区三区四区五区| 国产人妻精品一区二区三区秋霞 | 国产亚洲精品一区二区三区| 岛国片国产成人亚洲播放| 五月丁香| 久久精品高清无码一区| 一级二级在线观看| 操婷婷逼| 啊啊啊啊啊啊啊啊啊啊在线观看| 天天综合色图| 日韩av在线免费网站| 久久久久久久 九九九九九九九| 亚洲天堂资源| 可以免费看黄片的视频| 天天插天天干| 欧美色图在线视频少妇| 一级性爱视频免费观看| 99ri在线视频| 97超碰精品成| 亚洲无码太久| 亚洲情色婷婷五月天| 97超碰国产亚洲精品| 少妇一区二区三区高速| 清清一区二区三区四区不卡视频| 日日97| 秋霞免费AV| 骚熟女吞| 免费中文综合精品| 老色69| 中文字幕制服诱惑| 天天色综合天天操| 操死我了啊啊啊| 福利操逼| 啊啊啊97视频| 日韩免费中文字幕视频| 一二三四日本视频高清| 亚洲丝袜少妇在线| 日韩另类| 情色大香蕉| 人妻-91porn| 久草线上视频免费看| 一本大道不卡一二三区| 狠狠操一区二区| 国产精品点击进入在线影院高清| 青青国产精品在线| 日韩一二三区| 精品精品精品| 91精片| 亚洲国产综合久久天堂| 天天综合亚洲综合| 天堂av2019| 亚洲欧美成人网站AAA| 黄页18禁| 成年人黄色视频免费| 国产一区二区三区不卡手机在线| 亚洲?V高清一区二区三区尤物| 久久婷婷国产一区二区色| 亚洲色图 欧美| 999久久久久久久精| 国产主播福利| 日夜久久久九九九久| 天天操人人操狠狠插| 欧美91在线+|+欧美| 久久一区二区高清免费| 色悠久久久av| 日本精品不卡一二三区| 97亚洲自在精品在线观看| 婷婷久久久| 欧美色就是色| 97视频620| 无码精品一区二区三区潘金莲| 茄子社区国产精品| 婷婷六月色| 91这里只有精品| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 人妻aa| 2017天天插| 另类亚洲图色| 午夜福利免费福利视频| 97久久超碰亚洲| 久久久久久久九九九九九九| 国产精品分类在线观看| 四虎在线观看网站| 人妻熟女一区在| 丁香五六月啪啪| 九9精品| 爆乳免费黄网站| 人人操人人插人www| 免费国产| 亚洲中文字幕有码视频一区二区三区| 国产精品一区av在线| 嗯嗯嗯啊啊在线观看| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 操操逼视频| 婷婷久久久精品| 久久e6只有精品| 亚洲精品a人片在线观看视| 超碰欧美97| 91精品免费| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 99re这里只有精品2| 67194无码不卡| 久久一区二区三区入口| 激情婷婷综合久久| 福利五区| 国产精品色哟哟| 另类小说五月天| 波多野结衣被操50分钟免费视频| 密臀在线视频| 狠狠2050在线观看| 殴美,日韩国产伦精品| 91天堂色男人的天堂| 老汉网| 97超碰欧美精品| 久久亚码| 91 丝袜在线| 五月天大香蕉| 黑人操一区二区| 无码动漫av中文字幕| 天天色综合影视网| 日本超碰色精品| 大香蕉综合| 亚洲少妇喷视频看| 欧美系列在线一区二区| 国产亚洲精品A在线观看下载| 天天欧美| 久久久天美| 欧美韩日精品资源| 嗯……啊…嗯嗯…啊…好舒服| 丁香六月婷婷久久综合| 伊人女女资源在线观看| 天天狠操| 26uuu国产亚洲综合| 日本操逼视频免费| 亚洲欧美伦综合| 精品十八在线观看| 久草久日| 精人妻无码一区二区三区伊人直播| 国产又大又粗又长视频在线| 欧美九九爱| 欧美图片偷拍| 嗯啊不要在线观看嗯啊| 91狠狠综合久久| 婷婷丁香五月激情啪啪| 久久一级无码精品毛片6| www.黄色在线| 国产女乱淫真高清免费视频| 一级做a爰片久久毛片图片| 成人av毛片在线观看| 家庭乱伦麻豆| 亚洲本色精品一区二区久久| 精品国产乱码久久| 啊啊啊啊网站| 日本精品五区| 天天澡天天狠天天天做| 久久久久久9| 最新日本中文字幕| 熟妇综合一区二区三区| 立川理惠被中出无码| 国产午夜精品理论片a大结局| 久久久久九九九九| 人人搞人人插人人操| 男插女青青影院| A一区片| 国产成人一级av88| 无码黑人精品一区二区三区三| 久久精品国产亚洲AV嘿嘿| 女人 A一级| 日本精品成人无码| www.色婷婷| 青青青操| 国产精品久久久久久久久久久久久久久久久久| 97硬碰| 日产123区精品免费观看|