【问题标题】:C# - Hook In to Http RequestC# - 连接到 Http 请求
【发布时间】:2017-04-30 11:06:29
【问题描述】:

我有一个应用程序,其中库正在发出 Http 请求。我对此没有任何控制权。我需要连接到请求并将标头放入请求中以进行身份​​验证。有没有办法挂钩事件以查看传出请求,并在将它们发送到服务器之前可能会更改它们?

我目前正在使用 Silverlight,但 .NET、UWP 或 .NET Core 中的任何示例也都很棒。

【问题讨论】:

    标签: c# silverlight http-headers httprequest


    【解决方案1】:

    如果您的应用使用浏览器,您可以使用 fiddler 捕获网络流量或可能使用浏览器的 F12 开发人员工具(网络选项卡)。

    如果您需要在 C#(Windows 应用程序)级别捕获和修改外部组件的请求,那就有点棘手了。你需要在低水平上工作;例如,如果应用程序位于 IIS 上,您可以编写一个 ISAPI 过滤器并隐含一个 HttpHandler 来覆盖和修改请求。

    如果它是一个 Windows 服务或只是一个普通的 exe,那么你的选择就更有限了。请进一步解释。

    看这篇文章:

    How to intercept packets sent by a application and check what they have?

    【讨论】:

    • 是的。我知道。但是,我需要在 C# 级别执行此操作。这并不是要看到流量以一种特殊的方式来回移动。该库正在发送没有身份验证标头的请求。图书馆本质上是错误的。我想知道 Silverlight 或 .NET 是否有办法连接到 Http 请求事件以便能够操纵它们。我知道这是一个很长的机会,因为它可能是一个安全漏洞,但只是把它扔在那里......
    • 谢谢。这次你更接近了,但 ISAPI 过滤器不是我的意思。我不想在服务器端拦截数据包。我正在尝试拦截将要在客户端发送之前发送的请求(确切地说是 Silverlight)。 Pcap 和 SharpPcap 看起来很有趣。我会调查这些。
    • 确切地说,我要拦截的请求来自 Silverlight 调用 Application.Current.CheckAndDownloadUpdateAsync()。它只是以普通文件的形式向服务器请求Xap包,但服务器不会接受没有标头进行身份验证的请求。
    • 您是否有权访问此方法(Application.Current.CheckAndDownloadUpdateAsync())?如果是这样,您可以将一个事件委托连接到它,并通过订阅该事件返回一个修改后的请求对象,该对象对标头进行操作,从而进行必要的更改。这类似于 OWIN 等身份验证框架的工作方式 - 它们向主机标头添加内容。
    • 您可以创建一个使用您想要覆盖的silverlight 控件的silverlight 项目,然后也以这种方式拦截该方法。甚至 WPF 应用程序也可以使用 Silverlight 控件,这将为您提供更大的控制权。我想我的问题是你有源代码吗?
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2015-12-30
    • 2016-01-18
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多