// 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. #ifndef NET_URL_REQUEST_REFERRER_POLICY_H_ #define NET_URL_REQUEST_REFERRER_POLICY_H_ namespace net { // A ReferrerPolicy controls the contents of the Referer header when URLRequest // following HTTP redirects. Note that setting a ReferrerPolicy on the request // has no effect on the Referer header of the initial leg of the request; the // caller is responsible for setting the initial Referer, and the ReferrerPolicy // only controls what happens to the Referer while following redirects. // // NOTE: This enum is persisted to histograms. Do not change or reorder values. // TODO(~M89): Once the Net.URLRequest.ReferrerPolicyForRequest metric is // retired. enum class ReferrerPolicy { // Clear the referrer header if the header value is HTTPS but the request // destination is HTTP. This is the default behavior of URLRequest. CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE = 0, // A slight variant on CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE: // If the request destination is HTTP, an HTTPS referrer will be cleared. If // the request's destination is cross-origin with the referrer (but does not // downgrade), the referrer's granularity will be stripped down to an origin // rather than a full URL. Same-origin requests will send the full referrer. REDUCE_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN = 1, // Strip the referrer down to an origin when the origin of the referrer is // different from the destination's origin. ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN = 2, // Never change the referrer. NEVER_CLEAR = 3, // Strip the referrer down to the origin regardless of the redirect // location. ORIGIN = 4, // Clear the referrer when the request's referrer is cross-origin with // the request's destination. CLEAR_ON_TRANSITION_CROSS_ORIGIN = 5, // Strip the referrer down to the origin, but clear it entirely if the // referrer value is HTTPS and the destination is HTTP. ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE = 6, // Always clear the referrer regardless of the request destination. NO_REFERRER = 7, MAX = NO_REFERRER, }; } // namespace net #endif // NET_URL_REQUEST_REFERRER_POLICY_H_