Я создаю веб-приложение 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. Я проверил его с большим количеством прокси с разных сайтов - результат один и тот же.
Может кто-тосказать мне почему это может случиться?