我目前正在使用ASP.Net完成一个反向代理项目。它接收来自客户端的请求,为另一个服务器创建一个HttpWebRequest对象(具有相同的HTTP标头),读取响应并将其转发给客户端。我的问题是,使用Internet Explorer时(使用firefox,chrome或safari时从不发生),代理发送的请求会从远程服务器生成HTTP 400错误响应。我认为请求创建出了问题,并且没有成功地检查我的代码。所以我在客户端和代理服务器上都使用了fiddler来比较这两个请求,看看我能否找到它们之间的显着差异。问题是:在客户机上运行fiddler时,HTTP 400响应消失。
这是令人困惑的,因为我不认为小提琴手改变了它收到的请求,但我想这提供了什么是错误的请求提示。我不知道哪些转换适用于请求,但它似乎是解决我的问题的方法。
有谁知道什么可以解释这种行为?对通过fiddler发送的请求进行了哪些转换?
1
A
回答
0
除非您编写了代码,否则Fiddler通常不会修改您发送的HTTP请求。您可以使用像NetMon这样的低级工具来捕获带和不带提琴手的实际请求。
唯一可能有意义的例外是,如果某些服务器在请求行中获得完全限定的路径,则会引发错误。例如。
GET http://www.example.com/ HTTP/1.1
Host: www.example.com
抛出一个错误,而
GET/HTTP/1.1
Host: www.example.com
没有。不同之处在于前者意味着被发送到代理服务器,而后者只能合法发送到源服务器。服务器是假设接受前者,如果他们得到它,但有些是越野车,不。 Fiddler会“解决”这个问题,因为它会根据代理规则将前者转换为后者。尽管如此,我不知道你的代码是如何产生前者的,因为通常System.NET会照顾你的格式化请求。
相关问题
- 1. 使用fiddler监视通过代理发送的C#请求
- 2. 如何在通过Fiddler发送的请求中放置断点?
- 3. 通过Fiddler在POST请求中发送凭证
- 4. 通过Fiddler发送POST请求到asp.net mvc动作
- 5. 使用Fiddler向WebApi发送POST请求
- 6. php请求ip时默认发送了哪些信息?
- 7. 通过请求头发送数据与通过请求主体发送数据
- 8. 通过在请求中发送参数(凭据)进行登录
- 9. 这里发生了哪些转换?
- 10. 发生了哪些类型转换?
- 11. 通过ASP.net发送HTTP发布请求
- 12. 哪些数据通过表单发送?
- 13. 发送HTTP请求通过python脚本
- 14. 通过WCF发送异常(System.Reflection.TargetInvocationException)请求
- 15. 通过ASP.NET C发送HTTP请求#
- 16. 通过API发送帖子请求
- 17. 通过https代理发送curl请求
- 18. 从请求通过json发送参数
- 19. 通过setVariables发送中继请求
- 20. 如何通过Django发送GET请求
- 21. 通过AJAX发送JSON POST请求
- 22. cURL通过PHP代理发送请求
- 23. 通过发送ussd请求启动SMS
- 24. 通过AJAX发送http请求
- 25. alamofire通过肥皂发送请求
- 26. .NET 4.5 - 通过HttpPost发送SOAP请求
- 27. 通过GET请求发送JSON列表
- 28. 通过邮件发送日历请求
- 29. 通过.htaccess请求index.php时发送404?
- 30. 通过Jmeter发送安稳请求
我用wireshark来比较有和没有提琴手的原始数据包,没有发现任何相关的东西。请求行是第二种形式,所以它不是错误的原因。我也认为它可能与提琴手缓冲有关,但使用流模式不会改变任何东西。 – 2011-05-31 15:56:11
MSFT我发现有一个名为“x-SuppressProxySupportHeader”的标志,它可以防止Fiddler向401响应中添加特定的HTTP标头。你可以确认使用它,我必须添加oSession [“x-SuppressProxySupportHeader”] =“true”;到提琴手规则的OnBeforeResponse方法,以防止添加这些头文件?另外,还有其他标题自动添加到请求或响应? – 2011-06-01 13:51:33