所以我仍在尝试在 Cefsharp 3 中找到该功能(如果有的话),可以在其中检查请求响应中的标头。如果它不存在,是因为它在 CEF 3 中不存在吗?或者,如果我要实施它,我应该从哪里开始寻找?
2 回答
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 轻松完成这种类型的解决方案。
提供更多控制的另一种方法是使用方案处理程序(它更清洁 IMO)。
添加一个拦截资源加载的方案处理程序:
CEF.RegisterScheme("ascheme", new HandlerFactory());
然后(一旦你创建了一个微不足道的工厂或 2)你有这个覆盖可用:
public bool ProcessRequestAsync(IRequest request, ISchemeHandlerResponse response, OnRequestCompletedHandler requestCompletedCallback)
Response 包含 Headers/MimeType 和 Stream 以允许更多控制。我希望这有帮助。