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...對應的就是請求地址
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