Index: content/browser/loader/cross_site_resource_handler.cc |
diff --git a/content/browser/loader/cross_site_resource_handler.cc b/content/browser/loader/cross_site_resource_handler.cc |
index a7e8f122f7ac26c6a338cf6f251dcb1f610a98bf..3e88d3395f36e831dcdafe54d1a85af0edaa9c7f 100644 |
--- a/content/browser/loader/cross_site_resource_handler.cc |
+++ b/content/browser/loader/cross_site_resource_handler.cc |
@@ -121,6 +121,11 @@ bool CrossSiteResourceHandler::OnRequestRedirected( |
const GURL& new_url, |
ResourceResponse* response, |
bool* defer) { |
+ // Top-level requests change their cookie first-party URL on redirects, while |
+ // subframes retain the parent's value. |
+ if (GetRequestInfo()->GetResourceType() == ResourceType::MAIN_FRAME) |
+ request()->set_first_party_for_cookies(new_url); |
+ |
// We should not have started the transition before being redirected. |
DCHECK(!in_cross_site_transition_); |
return next_handler_->OnRequestRedirected( |