bool DocumentLoader::redirectReceived( Resource* resource, const ResourceRequest& request, const ResourceResponse& redirectResponse) { DCHECK_EQ(resource, m_mainResource); DCHECK(!redirectResponse.isNull()); m_request = request; // If the redirecting url is not allowed to display content from the target // origin, then block the redirect. const KURL& requestURL = m_request.url(); RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redirectResponse.url()); if (!redirectingOrigin->canDisplay(requestURL)) { FrameLoader::reportLocalLoadFailed(m_frame, requestURL.getString()); m_fetcher->stopFetching(); return false; } if (!frameLoader()->shouldContinueForNavigationPolicy( m_request, SubstituteData(), this, CheckContentSecurityPolicy, m_navigationType, NavigationPolicyCurrentTab, replacesCurrentHistoryItem(), isClientRedirect(), nullptr)) { m_fetcher->stopFetching(); return false; } DCHECK(timing().fetchStart()); appendRedirect(requestURL); didRedirect(redirectResponse.url(), requestURL); frameLoader()->client()->dispatchDidReceiveServerRedirectForProvisionalLoad(); return true; }
void DocumentLoader::redirectReceived(Resource* resource, ResourceRequest& request, const ResourceResponse& redirectResponse) { ASSERT_UNUSED(resource, resource == m_mainResource); ASSERT(!redirectResponse.isNull()); m_request = request; // If the redirecting url is not allowed to display content from the target origin, // then block the redirect. const KURL& requestURL = m_request.url(); RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redirectResponse.url()); if (!redirectingOrigin->canDisplay(requestURL)) { FrameLoader::reportLocalLoadFailed(m_frame, requestURL.getString()); m_fetcher->stopFetching(); return; } if (!frameLoader()->shouldContinueForNavigationPolicy(m_request, SubstituteData(), this, CheckContentSecurityPolicy, m_navigationType, NavigationPolicyCurrentTab, replacesCurrentHistoryItem(), isClientRedirect())) { m_fetcher->stopFetching(); return; } ASSERT(timing().fetchStart()); timing().addRedirect(redirectResponse.url(), requestURL); appendRedirect(requestURL); frameLoader()->receivedMainResourceRedirect(requestURL); }