Столкнулся с интересной проблемой при работе с контентом социальной сети ВКонтакте. Оказывается, старые-добрые фотки, которые лежат на серверах csXXXXX.vk.com, не доступны по протоколу HTTPS и работают исключительно с HTTP. Как оказалось, за передачу данных для защищенных соединений отвечает сервер https://pp.vk.me/ и все запросы должны идти через него. Сам рецепт преобразования адресов оказался очень прост.
Рассмотрим простейший адрес на контент-сервере в ВК: http://cs625525.vk.me/v625525616/3eb8c/sE-1l7cEmQQ.jpg. Как мы видим, он состоит из номера сервера с префиксом cs, идентификатора пользователя и пути к файлу. Тот же самый файл по HTTPS-протоколу будет лежать уже по адресу: https://pp.vk.me/c625525/v625525616/3eb8c/sE-1l7cEmQQ.jpg. И здесь мы так же можем видеть все те же самые элементы, только в иной последовательности. Вместо префикса cs теперь используется просто c, и он переместился из поддомена в путь.
Если говорить языком PHP, преобразование картинки будет вот таким:
$pic = str_replace( 'http://', 'https://', $pic ); $pic = preg_replace( '#cs([0-9]+)\.vk\.me#i', 'pp.vk.me/c$1', $pic );
Вот так всё просто оказалось!