mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 04:39:03 +02:00
In the non-e10s case, this is done by simply avoiding to set the LOAD_BYPASS_SERVICE_WORKER flag when we detect a non-internal redirect in the manual redirect mode. The e10s solution is a bit more complicated. Only the child process knows whether a URI needs to be intercepted, so we piggy back on the code written to support the |event.respondWith(Response.redirect())| case where we know in the child that the target of the redirect needs to be intercepted. This means that we need to check the same condition as in the non-e10s case, but we also need to check whether the target of the redirection needs to be intercepted, which means we need to properly take secure upgrades into account as well. This is done by computing both whether we should intercept and whether we should do a secure upgrade in HttpChannelChild::SetupRedirect() and saving the information on the HttpChannelChild for later usage in HttpChannelChild::AsyncOpen().
34 lines
1.4 KiB
Text
34 lines
1.4 KiB
Text
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
[ptr] native RequestHeaderTuples(mozilla::net::RequestHeaderTuples);
|
|
[ref] native OptionalCorsPreflightArgsRef(mozilla::OptionalCorsPreflightArgs);
|
|
|
|
interface nsIPrincipal;
|
|
interface nsIURI;
|
|
|
|
[uuid(d02b96ed-2789-4f42-a25c-7abe63de7c18)]
|
|
interface nsIHttpChannelChild : nsISupports
|
|
{
|
|
void addCookiesToRequest();
|
|
|
|
// Mark this channel as requiring an interception; this will propagate
|
|
// to the corresponding parent channel when a redirect occurs.
|
|
void forceIntercepted(in boolean postRedirectChannelShouldIntercept,
|
|
in boolean postRedirectChannelShouldUpgrade);
|
|
|
|
// Headers that the channel client has set via SetRequestHeader.
|
|
readonly attribute RequestHeaderTuples clientSetRequestHeaders;
|
|
|
|
// Headers that the channel client has set via SetRequestHeader.
|
|
[notxpcom, nostdcall]
|
|
void GetClientSetCorsPreflightParameters(in OptionalCorsPreflightArgsRef args);
|
|
|
|
// This method is called by nsCORSListenerProxy if we need to remove
|
|
// an entry from the CORS preflight cache in the parent process.
|
|
void removeCorsPreflightCacheEntry(in nsIURI aURI, in nsIPrincipal aRequestingPrincipal);
|
|
};
|