HttpWebRequest referer header 在重定向后丢失

HttpWebRequest referer header lost following redirect

在 HttpWebRequest 上设置引用 header 时,我看到了两种不同的行为。在某些站点上,referer header 将保留,因为每个重定向都被遵循,而在其他站点上,referer header 在第一次请求后被删除。什么会导致这种行为,有没有办法控制它?

示例(这似乎是特定于 HTTPS 但不确定原因)

在此请求中,header 将在重定向中被丢弃。

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mail.google.com/mail/");
        request.Referer = "http://www.google.com";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

在此请求中,header 保留在随后的每个重定向中。第二个请求的不同之处在于 http 与 https。

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://mail.google.com/mail/");
        request.Referer = "http://www.google.com";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

来自任何 HTTPS 站点的引荐来源 header 都会被删除,无论它去往何处:

http://referencesource.microsoft.com/#System/net/System/Net/HttpWebRequest.cs,5782