diff --git a/shell/browser/net/electron_url_loader_factory.cc b/shell/browser/net/electron_url_loader_factory.cc index 40a07017bfda..795a10cf33b4 100644 --- a/shell/browser/net/electron_url_loader_factory.cc +++ b/shell/browser/net/electron_url_loader_factory.cc @@ -236,8 +236,25 @@ void ElectronURLLoaderFactory::StartLoading( // API in WebRequestProxyingURLLoaderFactory. std::string location; if (head->headers->IsRedirect(&location)) { + GURL new_location = GURL(location); + net::SiteForCookies new_site_for_cookies = + net::SiteForCookies::FromUrl(new_location); network::ResourceRequest new_request = request; - new_request.url = GURL(location); + new_request.url = new_location; + new_request.site_for_cookies = new_site_for_cookies; + + net::RedirectInfo redirect_info; + redirect_info.status_code = head->headers->response_code(); + redirect_info.new_method = request.method; + redirect_info.new_url = new_location; + redirect_info.new_site_for_cookies = new_site_for_cookies; + mojo::Remote client_remote( + std::move(client)); + + client_remote->OnReceiveRedirect(redirect_info, std::move(head)); + + // Unound client, so it an be passed to sub-methods + client = client_remote.Unbind(); // When the redirection comes from an intercepted scheme (which has // |proxy_factory| passed), we askes the proxy factory to create a loader // for new URL, otherwise we call |StartLoadingHttp|, which creates