Commit 7362dcaf authored by Andrey Kosyakov's avatar Andrey Kosyakov Committed by Commit Bot

DevTools: fix URLREquestJob-based interception to not lose samesite cookies

Bug: 832045
Change-Id: I30edba5188f28a67d20de4dbfe75cc2e419c107f
Reviewed-on: https://chromium-review.googlesource.com/1040664Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555635}
parent c4280a5a
...@@ -120,6 +120,13 @@ DevToolsURLInterceptorRequestJob::SubRequest::SubRequest( ...@@ -120,6 +120,13 @@ DevToolsURLInterceptorRequestJob::SubRequest::SubRequest(
request_->SetResponseHeadersCallback( request_->SetResponseHeadersCallback(
devtools_interceptor_request_job->response_headers_callback_); devtools_interceptor_request_job->response_headers_callback_);
net::URLRequest* original_request =
devtools_interceptor_request_job_->request();
request_->set_attach_same_site_cookies(
original_request->attach_same_site_cookies());
request_->set_site_for_cookies(original_request->site_for_cookies());
request_->set_initiator(original_request->initiator());
// Mimic the ResourceRequestInfoImpl of the original request. // Mimic the ResourceRequestInfoImpl of the original request.
const ResourceRequestInfoImpl* resource_request_info = const ResourceRequestInfoImpl* resource_request_info =
static_cast<const ResourceRequestInfoImpl*>( static_cast<const ResourceRequestInfoImpl*>(
......
Tests that same site cookies are included with POST request when interception is enabled.
content: HTTP_COOKIE: name=value
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank(
`Tests that same site cookies are included with POST request when interception is enabled.`);
await session.protocol.Network.clearBrowserCache();
await session.protocol.Network.clearBrowserCookies();
await session.protocol.Network.setCacheDisabled({cacheDisabled: true});
await session.protocol.Network.enable();
await session.protocol.Runtime.enable();
await dp.Network.setRequestInterception({patterns: [{}]});
dp.Network.onRequestIntercepted(e => {
dp.Network.continueInterceptedRequest({interceptionId: e.params.interceptionId});
});
dp.Page.navigate({url: 'http://127.0.0.1:8000/inspector-protocol/network/resources/cookie-same-site.pl'});
await dp.Network.onceLoadingFinished();
const cookie = await session.evaluate(`
let form = document.createElement('form');
form.action = '/inspector-protocol/network/resources/echo-headers.php?headers=HTTP_COOKIE';
form.method = 'POST';
let data = document.createElement('input');
data.type = 'hidden';
data.name = 'data';
data.value = 1;
form.appendChild(data);
let submit = document.createElement('input');
submit.type = 'submit';
form.appendChild(submit);
document.body.appendChild(form);
submit.click();
`);
const requestId = (await dp.Network.onceLoadingFinished()).params.requestId;
const content = (await dp.Network.getResponseBody({requestId: requestId})).result.body;
testRunner.log(`content: ${content}`);
testRunner.completeTest();
})
#!/usr/bin/perl
print "Status: 200 OK\r\n";
print "Set-Cookie: name=value; SameSite=Lax\r\n\r\n";
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment