Puppeteer-sharp-extra icon indicating copy to clipboard operation
Puppeteer-sharp-extra copied to clipboard

Post request: PuppeteerSharp.PuppeteerException: 'Request is already handled!'

Open w4po opened this issue 2 years ago • 0 comments

PuppeteerExtraSharp version: 1.3.2 PuppeteerSharp version: 6.2.0 C# .NET Framework: 4.7.0 OS: Windows 11

Plugins: StealthPlugin, BlockResourcesPlugin

I am trying to send a post request with SetRequestInterceptionAsync, But I got the following: 'Request is already handled!'. Because of the following plugin: BlockResourcesPlugin.

Code:

//'info' is an object containing my data (url, headers,etc...)
//Manage Post
if (!string.IsNullOrEmpty(info.Post))
{
	await _page.SetRequestInterceptionAsync(true).ConfigureAwait(false);
	_page.Request += OnRequestHandler;
	async void OnRequestHandler(object s, RequestEventArgs e)
	{
		_page.Request -= OnRequestHandler;
		
		var payload = new Payload()
		{
			Url = info.Url,
			Method = HttpMethod.Post,
			PostData = info.Post,
			Headers = info.AdditionalHeaders
		};
		await e.Request.ContinueAsync(payload).ConfigureAwait(false);

		await _page.SetRequestInterceptionAsync(false).ConfigureAwait(false);
	}
}
await _page.GoToAsync(info.Url, new NavigationOptions { Referer = info.Referer }).ConfigureAwait(false);

The problem was raised because of the following Plugin: 'BlockResourcesPlugin', I've removed it and the code works fine now.

var blockResourcesPlugin = new BlockResourcesPlugin();
blockResourcesPlugin.AddRule(builder => builder.BlockedResources(ResourceType.StyleSheet));
extra.Use(blockResourcesPlugin);

_browser = await extra.LaunchAsync(launchOptions).ConfigureAwait(false);

w4po avatar Mar 10 '22 01:03 w4po