Почему отсутствуют заголовки "X-Forwarded-For" и "Via" при запросе ресурса по https?
Я строю веб-приложение Asp.Net Core. Я создал ресурс, который возвращает заголовки запроса как json. Я предполагаю, что когда я запрашиваю этот ресурс через прозрачный прокси-сервер (из списка https://www.proxynova.com/proxy-server-list/transparent-proxies/), который гарантированно добавляет заголовки X-Forwarded-For и Via чтобы запросить, я увижу эти заголовки в json ответа:
Запрос: https://res.cloudinary.com/leninsdo/image/upload/v1550267036/1_vmfx0z.png
Ответ: https://res.cloudinary.com/leninsdo/image/upload/v1550267039/2_dtftny.png
Но когда я запрашиваю ровно тот же ресурс с тем же прокси через https, я не вижу этих заголовков в ответе:
Запрос: https://res.cloudinary.com/leninsdo/image/upload/v1550267251/3_qlifuv.png
Ответ: https://res.cloudinary.com/leninsdo/image/upload/v1550267313/4.png
Я использую Kestrel в качестве веб-сервера и настроил его в Program.cs следующим образом:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000);
options.Listen(IPAddress.Any, 80);
options.Listen(IPAddress.Any, 443, listenOptions =>
{
listenOptions.UseHttps(CertFilename, CertPassword);
});
})
.UseSetting("https_port", "443")
.UseStartup<Startup>()
.Build();
Код в контроллере, который перебирает заголовки и сериализует их в json, также очень обычен и, похоже, не является источником проблемы:
List<Header> headers = new List<Header>(); //later returned in json
foreach(var key in context.Request.Headers.Keys)
{
var values = StringValues.Empty;
Request.Headers.TryGetValue(key, out values);
headers.Add(new Header{ //my custom class with two fields - Key and Value
Key = key,
Value = (String) Convert.ChangeType(values.ToString(),typeof(String))
});
}
И я совершенно не знаю, почему заголовки Via и X-Forwarded-For исчезают, когда ресурс запрашивается через https вместо http. Я проверил это с большим количеством прокси с разных сайтов - результат один и тот же.
Может кто-нибудь сказать мне, почему это может произойти?