繁体   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