blob: 312917b8c315dcc74f52fda13a8472a05977d3af [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/common/loader/network_utils.h"
#include "base/feature_list.h"
#include "build/build_config.h"
#include "net/net_buildflags.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "third_party/blink/public/common/features.h"
#include "url/url_constants.h"
namespace blink {
namespace network_utils {
bool AlwaysAccessNetwork(
const scoped_refptr<net::HttpResponseHeaders>& headers) {
if (!headers)
return false;
// RFC 2616, section 14.9.
return headers->HasHeaderValue("cache-control", "no-cache") ||
headers->HasHeaderValue("cache-control", "no-store") ||
headers->HasHeaderValue("pragma", "no-cache") ||
headers->HasHeaderValue("vary", "*");
}
bool IsURLHandledByNetworkService(const GURL& url) {
if (url.SchemeIsHTTPOrHTTPS() || url.SchemeIsWSOrWSS())
return true;
#if !BUILDFLAG(DISABLE_FTP_SUPPORT)
if (url.SchemeIs(url::kFtpScheme) &&
base::FeatureList::IsEnabled(features::kFtpProtocol))
return true;
#endif
return false;
}
bool IsOriginSecure(const GURL& url) {
// TODO(lukasza): data: URLs (and opaque origins associated with them) should
// be considered insecure according to
// https://www.w3.org/TR/powerful-features/#is-url-trustworthy.
// Unfortunately, changing this behavior of NetworkUtils::IsOriginSecure
// breaks quite a few tests for now (e.g. considering data: insecure makes us
// think that https + data = mixed content), so fixing this is postponed to a
// follow-up CL. WIP CL @ https://crrev.com/c/1505897.
if (url.SchemeIs(url::kDataScheme))
return true;
return network::IsUrlPotentiallyTrustworthy(url);
}
} // namespace network_utils
} // namespace blink