使用Fly怎么攔截全局Ajax請求

本篇文章給大家分享的是有關(guān)使用Fly怎么攔截全局Ajax請求,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、青云譜網(wǎng)站維護、網(wǎng)站推廣。

原理

無論你的應(yīng)用是通過那個框架或庫發(fā)起的 Ajax 請求,最終都會回歸到 XMLHttpRequest 。 所以,攔截的本質(zhì)就是替換瀏覽器原生的 XMLHttpRequest 。具體就是,在替換之前保存先保存 XMLHttpRequest,然后在請求過程中根據(jù)具體業(yè)務(wù)邏輯決定是否需要發(fā)起網(wǎng)絡(luò)請求,如果需要,再創(chuàng)建真正的 XMLHttpRequest 實例。

Fly 攔截全局ajax

如果您還不了解 fly, 請參考其官網(wǎng):https://wendux.github.io/dist/#/doc/flyio/readme

我們知道,在 Fly 中,XMLHttpRequest 就是一個http engine。所以我們要攔截,只需要自定義一個engine替換掉全局的XMLHttpRequest 就行,而 Fly 提供了快速生成 engine 的工具,所以我們可以很方便實現(xiàn)攔截。

我們先看一個簡單的例子,功能是輸出每次網(wǎng)絡(luò)請求 url 和 method。

實現(xiàn)

 var log = console.log;
//切換fly engine為真正的XMLHttpRequest
fly.engine = XMLHttpRequest;
var engine = EngineWrapper(function (request, responseCallback) {
  console.log(request.url, request.method)
  //發(fā)起真正的ajax請求
  fly.request(request.url, request.data, request)
    .then(function (d) {
      responseCallback({
        statusCode: d.engine.status,
        responseText: d.engine.responseText,
        statusMessage: d.engine.statusText
      })
    })
    .catch(function (err) {
      responseCallback({
        statusCode:err.status,
        statusMessage:err.message
      })
    })
})
//覆蓋默認(rèn)
XMLHttpRequest = engine;
axios.post("../package.json").then(log)

我們用 axios 發(fā)起一個請求測試一下:

axios.post("../package.json").then(log)

//控制臺輸出
> http://localhost:63341/Fly/package.json POST
> {data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}

可以看到控制臺中輸出了請求的 url 和 method,我們的攔截成功了。而 第二行的結(jié)果對象是axios then打印出的。

因為 Fly支持切換engine, 我們可以直接先將 fly engine 切換為真正的 XMLHttpRequest ,然后再覆蓋,這樣fly中的網(wǎng)絡(luò)請求都是通過真正的 XMLHttpRequest 發(fā)起的 (事實上, 瀏覽器環(huán)境下 fly 默認(rèn)的 engine本就是 XMLHttpRequest,無需手動切換,此處為了清晰,故手動切換了一下)。fly 會根據(jù)request對象自動同步請求頭。如果想阻止請求,直接在 adapter 中 return 即可。

其它攔截方法
Github上的開源庫 Ajax-hook 也可以攔截全局的的ajax請求,不同的是,它可以攔截ajax請求的每一步,每一個回調(diào),不僅強大,而且也很輕量(1KB)。和上面通過 fly engine 攔截的方式相比 ,Ajax-hook的攔截粒度更細,但Ajax-hook由于使用了ES5的 getter、setter,所以不支持IE9以下的瀏覽器。

以上就是使用Fly怎么攔截全局Ajax請求,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:使用Fly怎么攔截全局Ajax請求
文章鏈接:http://m.kartarina.com/article32/jecdsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊App開發(fā)建站公司網(wǎng)站內(nèi)鏈云服務(wù)器網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
主站蜘蛛池模板: 无码人妻精品中文字幕| 国产精品无码素人福利不卡| 国产亚洲精久久久久久无码77777| 青春草无码精品视频在线观| 亚洲精品无码久久久影院相关影片| 98久久人妻无码精品系列蜜桃| 亚洲日韩一区二区一无码| 亚洲成?Ⅴ人在线观看无码| 国产a级理论片无码老男人| 69成人免费视频无码专区| 亚洲AV无码专区国产乱码4SE| 成人免费无码视频在线网站| 免费A级毛片无码专区| 久久久91人妻无码精品蜜桃HD| 无码人妻精品中文字幕免费东京热| 国产无码一区二区在线| 久久水蜜桃亚洲AV无码精品| 无码国产伦一区二区三区视频| 中文无码人妻有码人妻中文字幕| 免费无码A片一区二三区| 亚洲AV无码久久久久网站蜜桃| 熟妇人妻中文av无码| 亚洲精品无码成人片在线观看 | 精品久久无码中文字幕| 中文字幕无码免费久久9一区9 | 精品无码无人网站免费视频| 中文字幕无码不卡在线| 色综合热无码热国产| 亚洲精品9999久久久久无码| 亚洲AV无码成人专区| 精品人妻无码区在线视频 | 无码人妻啪啪一区二区| 精品多人p群无码| 亚洲AV无码精品蜜桃| 亚洲熟妇无码一区二区三区| 50岁人妻丰满熟妇αv无码区| 日韩乱码人妻无码中文字幕久久 | 潮喷失禁大喷水无码| 久久无码AV中文出轨人妻| a级毛片无码免费真人久久| 久久久久久无码国产精品中文字幕|