3

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

4

2 回答 2

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++。
  • 为 CefSharp 项目贡献 C# 包装器CefURLRequestClient和朋友 - 这是轻量级 C++ 和 C# 的组合。

您可能还对有一种在 JavaScript 中获取 HTTP 标头的方法感兴趣,只要您自己使用 AJAX 发起了请求: Accessing the web page's HTTP Headers in JavaScript

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

于 2014-12-10T11:08:45.660 回答
0

提供更多控制的另一种方法是使用方案处理程序(它更清洁 IMO)。

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

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

然后(一旦你创建了一个微不足道的工厂或 2)你有这个覆盖可用:

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

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

于 2015-01-23T08:35:09.900 回答