簡體   English   中英

FiddlerCore產生http錯誤

[英]FiddlerCore generated http errors

我正在使用FiddlerCore作為我的代理框架。

當我將網絡瀏覽到不存在的站點時(例如http://asdasd ),我得到了dns查找失敗的提琴手生成頁面- [Fiddler] DNS lookup for "asdasd" failed. No such host is known [Fiddler] DNS lookup for "asdasd" failed. No such host is known

我希望它顯示通常的瀏覽器錯誤,可能嗎?

首先要了解的是,“瀏覽器錯誤”一詞具有誤導性,因為瀏覽器中存在兩種情況。

  1. 用戶直接連接到網絡
  2. 用戶位於任何類型的代理(例如Fiddler,Squid等)的背后。

如果用戶直接連接到Web,則在DNS查找或連接失敗時,瀏覽器本身會生成各種錯誤頁面。

如果瀏覽器位於代理之后,則代理必須生成錯誤頁面並將其返回給客戶端。 如果需要,它可以嘗試模仿瀏覽器的錯誤頁面,但這對於每個客戶端都需要不同的邏輯。

但是,您可以使用自己選擇的一種來覆蓋FiddlerCore的默認錯誤響應。

首先,附加一個代表:

FiddlerApplication.BeforeReturningError += FiddlerApplication_BeforeReturningError;

然后,添加代碼以生成新的錯誤響應:

private void FiddlerApplication_BeforeReturningError(Session oSession) {
 if (oSession.bHasResponse) { 
  string sTitle = "Unable to load page";
  string sOriginalMessage = oSession.GetResponseBodyAsString().Trim().Replace("[Fiddler] ", String.Empty);
  oSession.oResponse["Content-Type"] = "text/html; charset=utf-8";
  oSession.oResponse["Cache-Control"] = "max-age=0, must-revalidate";
  string sEnhancedError = 
    String.Format("<!doctype html><html><head><title>{0}</title>\r\n<style>" +
    "body {{ background-color: #CCDDDD; font-family: sans-serif }}\r\npre {{ max-width:600px; white-space:pre-wrap;}}\r\n" +
    "</style></head>\r\n<body><h1>MyProxy - Page Unavailable</h1>The specified resource could not be loaded.<br /><pre>{1}</pre></body></html>", sTitle, sOriginalMessage);

    oSession.utilSetResponseBody(sEnhancedError);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM