CEF3中如何截获XMLHttpRequest(XHR)的笔记

这篇笔记详细介绍了在CEF3环境下如何截获并处理XMLHttpRequest(HDR)请求和响应数据,包括四个关键步骤,适用于VS2013SP3和cef_binary_3.1916.1804_windows32平台。
摘要由CSDN通过智能技术生成

标题:CEF3中如何截获XMLHttpRequest(HDR)请求和返回数据!

Title:  How to intercept XMLHttpRequest in CEF3!

阅读对象:主要是给自己看的,免得以后忘记。

环境:[1]VS2013SP3  [2]cef_binary_3.1916.1804_windows32

第一次更新日期:2014-11-4

最近更新日期:2014-11-4

正文:

总共分为四步步骤:

第一步:

extern UINT WM_XMLHttpRequest;
CefRefPtr<CefResourceHandler> ClientHandler::GetResourceHandler(CefRefPtr<CefBrowser> browser, 
	CefRefPtr<CefFrame> frame, CefRefPtr<CefRequest> request)
{
	//http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=10794
	if (request->GetResourceType() == RT_XHR)
	{
		//Second?
		CefRefPtr<KagulaResourceHandler> resHandler = new KagulaResourceHandler();
		resHandler->_browser = browser;
		resHandler->_frame = frame;
		resHandler->_clientHandler = this;

		return  resHandler;
	}
	return NULL;
}

第二步:

KagulaResourceHandler.h清单

#pragma once
#include <include/cef_app.h>
#include <include/cef_urlrequest.h>
class ClientHandler;
class KagulaUrlRequestClient;
class KagulaResourceHandler : public CefResourceHandler
{
public:
	KagulaResourceHandler() :
		_offset(0)
	{}

	virtual bool   ProcessRequest(CefRefPtr<CefRequest> request,
		CefRefPtr<CefCallback> callback)
		OVERRIDE;
	virtual void   GetResponseHeaders(CefRefPtr<CefResponse> response,
		int64& response_length,
		CefString& redirectUrl) OVERRIDE;
	virtual void   Cancel() OVERRIDE;

	virtual bool   ReadResponse(void* data_out, int bytes_to_read,
		int& bytes_read,
		CefRefPtr<CefCallback> callback)
		OVERRIDE;

public:
	CefRefPtr<ClientHandler> _clientHandler;
	CefRefPtr<CefBrowser> _browser;
	CefRefPtr<CefFrame> _frame;

	CefRefPtr<CefCallback> _responseHeadersReadyCallback;

	CefRefPtr<KagulaUrlRequestClient> _webRequestClient;
	CefRefPtr<CefURLRequest> _webRequest;

	std::string _cont
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kagula086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值