CEFsharp 3检索响应头

时间:2014-12-08 08:13:42

标签: c# chromium-embedded cefsharp

所以我仍在尝试在Cefsharp 3中找到该功能(如果它在那里),其中可以检查请求响应中的标头。如果它不在那里,是因为它不在CEF 3中吗?或者,我应该从哪里开始寻找,如果我实施它?

2 个答案:

答案 0 :(得分:4)

此功能尚未在CEF 3中使用。这是一个突出的问题: https://code.google.com/p/chromiumembedded/issues/detail?id=515

有一个解决方法......

  

目前没有很好的方法来过滤CEF3的响应内容。您可以通过CefRequestHandler :: GetResourceHandler使用CefResourceHandler并使用CefURLRequest自行执行请求/返回响应内容。

...但是在CefSharp 3中无法使用此解决方法,因为CefURLRequestClient和朋友未实现。

在这个阶段,根据你对C ++的舒适度,你可以考虑:

  • 为(C ++)CEF项目做出贡献并实现响应过滤功能 - 这将是所有C ++。
  • CefURLRequestClient和朋友的C#包装器贡献给CefSharp项目 - 这是轻量级C ++和C#的组合。

您可能还有兴趣知道有一种方法可以在JavaScript中获取HTTP标头,只要您自己使用AJAX启动了请求: Accessing the web page's HTTP Headers in JavaScript

通过将JavaScript注入当前页面,可以使用CefSharp 3轻松完成此类解决方案。

答案 1 :(得分:0)

提供更多控制的替代方案是使用schemehandler(它更干净的IMO)。

添加拦截资源加载的方案处理程序:

CEF.RegisterScheme("ascheme", new HandlerFactory());

然后(一旦你创建了一个琐碎的工厂或2)你可以使用这个覆盖:

public bool ProcessRequestAsync(IRequest request, ISchemeHandlerResponse response, OnRequestCompletedHandler requestCompletedCallback)

响应包含Headers / MimeType和Stream以允许更多控制。我希望这会有所帮助。