重定向后HttpWebRequest referer标头丢失

时间:2015-04-02 23:54:57

标签: c# httpwebrequest system.net

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

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

在此请求中,标题将被删除重定向。

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

在此请求中,标题仍保留在每个重定向上。第二个请求的差异是http vs https。

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

1 个答案:

答案 0 :(得分:1)

来自任何HTTPS站点的referer标头都会被剥离,无论它在哪里:

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