У меня есть сайт ASP.NET MVC, который настроен только для HTTPS.
На одной из страниц этого сайта должен отображаться контент с удаленного веб-сайта без поддержки SSL.
Я не могу загрузить контент через ajax, так как это будет означать, что незащищенный контент смешивается с моим безопасным контентом, и браузеры укажут, что сайт имеет смешанный контент.
Поэтому вместо этого я подумал, что могу загрузить контент на стороне сервера с помощью класса HttpClient
с помощью веб-API, а затем доставить его клиенту через AJAX:
public async Task<string> GetNewsAsync()
{
var newsFeed = WebConfig.GetAppSetting("NewsRssAddress");
var feedContent = "";
try
{
using (var client = new HttpClient())
using (var response = await client.GetAsync(newsFeed))
using (var content = response.Content)
{
feedContent = await content.ReadAsStringAsync();
}
}
catch(Exception ex)
{
Mailer.SendError(ex);
throw;
}
return feedContent;
}
Однако это все равно выдает WebException
:
System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
НЕ ДЕЛАЙТЕ ЭТОГО!
Напечатав это, я начинаю думать, что то, что я пытаюсь сделать, просто плохая практика и неправильно, и есть нет возможности загрузить незащищенный контент на безопасный сайт, это действительно имеет смысл, я имею в виду, что этот контент может быть любым!
Как оказалось, сайт, с которого я пытаюсь загрузиться, является другим веб-сайтом моей компании, просто на другом сайте нет SSL.
Насколько я могу судить, это мои варианты:
- Не загружайте контент. период.
- Попробуйте получить на другом сайте SSL-сертификат.
- Разберитесь с предупреждением о смешанном содержании (я не собираюсь этого делать!)
Мысли?