2011-05-10 54 views
38

我需要測試我編寫的一些客戶端應用程序代碼,以測試其對來自Web服務器的HTTP響應中返回的各種狀態代碼的處理情況。如何使用Fiddler修改HTTP響應中的狀態碼?

我已經安裝了Fiddler 2(Web調試代理),我相信有一種方法可以使用此應用程序修改響應,但我正在努力研究如何。這將是最方便的方式,因爲它可以讓我無需修改客戶端和服務器代碼。

任何人都可以協助,因爲我想攔截從服務器發送到客戶端的HTTP響應,並在它到達客戶端之前修改狀態碼?

任何意見將不勝感激。

+0

感謝您的鏈接EricLaw。我以前一直在那個網頁工作,但當時無法查看視頻。在家裏,看起來我可以看到這些,我發現他們是最有幫助的。提琴手當然是一個強大的野獸! – w5m 2011-05-13 09:52:39

+0

另見http://stackoverflow.com/a/1935570/67824 – 2014-05-25 12:14:39

+1

@EricLaw:更新的鏈接可能是:http://www.telerik.com/videos/fiddler/tag/tips-tricks – 2015-01-15 21:22:10

回答

65

好吧,我假設你已經能夠監控你的客戶/服務器流量。你想要做的就是在響應中設置一個斷點,然後在將它發送到客戶端之前進行操作。

這裏有幾個不同的方式做到這一點:

  1. 規則>自動斷點>後迴應
  2. 在quickexec箱(在底部的黑盒子)鍵入「bpafter yourpage.svc」 。現在Fiddler將在所有請求包含「yourpage.svc」的任何URL之前停止在斷點處。輸入「bpafter」不帶參數清除斷點。
  3. 使用FiddlerScript以編程方式篡改響應。 FiddlerScript的最佳文檔位於官方網站上:http://www.fiddler2.com/Fiddler/dev/

一旦您在斷點處停止響應,只需雙擊它即可在檢查器中將其打開。您現在有幾個選項:

  1. 右邊綠色的「運行至完成」按鈕(點擊發送響應)旁邊有一個下拉列表,您可以選擇一些默認響應類型。
  2. 或者,在標題檢查器上,更改頂部文本框中的響應代碼&消息。
  3. 或者,單擊「原始」檢查器並混淆原始響應以對其執行任意操作。也是一個好辦法,看看你的客戶做什麼時,它得到一個格式錯誤的響應,你可能會不小心測試:)
+1

絕對太棒了 - 那正是我所追求的。非常感謝chrisbro! – w5m 2011-05-13 09:34:39

+0

@chrisbro優秀+5 – MastAvalons 2013-01-30 15:46:38

+0

謝謝了,它幫助。 – Ayusman 2013-02-13 20:44:07

3

另一種方法是使用Fiddler的自動回覆選項卡(右側面板上) 。這允許您捕獲任何匹配字符串的URI的請求,並提供文件中的「canned」響應。該文件可以包含標頭和有效載荷。這種方法的優點是,您不必編寫FiddlerScript,也不必通過斷點手動處理每個請求。

您可以在Fiddler中設置規則,如下所示(確保您啓用不匹配的請求傳遞否則所有其他http請求都會失敗)。

Fiddler autoresponder setup 在這個例子中,任何URI包含「fooBar」的請求都將獲得預設的響應。該文件的格式將根據您的API(你可以用你的瀏覽器攔截一個「真實」的響應和它的基礎上)有所不同,但我的看起來像下面這樣:

HTTP/1.1 409 Conflict 
Server: Apache-Coyote/1.1 
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS 
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 
Access-Control-Max-Age: 86400 
Content-Type: application/vnd.api+json 
Content-Length: 149 
Date: Tue, 28 Mar 2017 10:03:29 GMT 

{"errors":[{"code":"OutOfStock","detail":"Item not in stock","source":{"lineId":{"type":"Order line Number","id":"1"}},"meta":{"availableStock":0}}]} 

我發現,它需要一個在最後一行(即json之後)回車,並且Content-Length頭必須匹配json中的字符數,否則webapp將掛起。你的旅費可能會改變。

+0

這對知道真的很有用 - 感謝分享。 – w5m 2017-03-29 07:28:29

+0

值得注意的是,您可以限制自動回覆規則,以便僅針對某些http方法啓動。例如:要返回一個POST的固定響應,但讓一個PATCH通過不變,上面的規則看起來像「METHOD:POST fooBar」。 – russthegibbon 2017-04-03 14:07:08

相關問題