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
在 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