1. 程式人生 > >fiddler用法:修改http請求返回資訊

fiddler用法:修改http請求返回資訊

假如我們只需要看前端頁面的一些展示效果,不用關注後臺實現的話。

一個簡便的做法是把前端http的請求重定向到你本地的一個檔案。

1.替換返回內容

假如有個這樣的一個request

wenread.com/getxml  

期望返回的結果是一個xml檔案,那我們可以本地建立一個xml檔案來替換掉,例如建立檔案response_xml.xml,放在D:\my_test目錄下。

(1)點選右邊的AutoResponder

勾選上 "Enable rules"、“Unmatched requests passthrough";

(2)點選按鈕"Add Rule"

其中If request matches...對應的就是請求地址

,如果是對應一個完整的url前面加上EXACT: ,如果只是模糊匹配就手動去掉。

then respond with...對應的就是返回資訊,你可以填寫一個本地檔案的地址

(3)點選"Save"

例如我的例子就是

http://wenread.com/getxml         D:\my_test\response_xml.xml

2.修改返回頭資訊

參考: http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

修改http請求返回的正文資訊比較容易,直接用xml、txt之類的本地檔案作為返回就行。但如果是修改或新增返回頭資訊就比較麻煩,需要改指令碼。

點選選單: Rules-->Customize Rules..., 如果沒安裝FiddlerScript Editor就會提示安裝。

安裝好後在介面右側會多出一個標籤欄FiddlerScript,在裡面編輯指令碼即可。或者點選 Rules-->Customize Rules... 直接開啟指令碼進行編輯。

搜尋關鍵字OnBeforeResponse會找到這樣一個函式,從函式名字也可以顧名思義,我們是修復返回頭資訊,那自然是在before response就通過指令碼做些操作。

 static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }

}

裡面預設的程式碼不用去管,我們新增如下藍色字樣的程式碼。先做個判斷,請求的hostname是什麼,然後對該請求的返回頭資訊,新增一些欄位。

 static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
       

       if (oSession.HostnameIs("wenread.com")){
            if (!oSession.ResponseHeaders.Exists("Access-Control-Allow-Credentials"))
                oSession.ResponseHeaders.Add("Access-Control-Allow-Credentials","true");
            if (!oSession.ResponseHeaders.Exists("Access-Control-Allow-Origin"))
                oSession.ResponseHeaders.Add("Access-Control-Allow-Origin","http://wenread.com");

    }

上面是新增頭資訊,假如是已經存在的頭資訊需要修改值咋整呢?

if (oSession.ResponseHeaders.Exists("Content-Type"))
                oSession.ResponseHeaders["Content-Type"]="application/x-javascript; charset=utf-8";

3.需要修改返回頭資訊的場景

關於2中的頭資訊修改,你可能會疑惑啥時用得著呢? 在跨域請求的時候需要用到,如果不這樣新增頭資訊就會請求失敗,這主要是出於安全考慮。跨域請求你可以簡單的理解成一個網站請求另外一網站的資訊。

參考: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS