我使用FiddlerCore作为代理框架。
当我在一个不存在的站点(如http://asdasd)上冲浪时,我会得到一个为dns查找失败- [Fiddler] DNS lookup for "asdasd" failed. No such host is known而生成的网页。
我想让它呈现通常的浏览器错误,有可能吗?
发布于 2014-01-30 22:28:48
首先要理解的是,“常见浏览器错误”一词具有误导性,因为浏览器中有两种情况。
如果用户直接连接到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);
}
}https://stackoverflow.com/questions/21457745
复制相似问题