Временный URL-адрес Rackspace CloudFiles HTTP (не HTTPS)

У меня есть приложение rails, которое позволяет пользователям загружать аудио и видео. Затем аудио и видео доставляются в наше приложение HTML5. Мы используем хранилище CloudFiles (частное) для хранения всех файлов, и все работает хорошо.

Проблема заключается в попытке передать видео пользователям Android (Android не любит воспроизводить мультимедийные файлы HTTPS).

Чтобы решить эту проблему, я ищу способ создать временный URL-адрес без ссылки HTTPS.

Любая помощь будет принята с благодарностью.

Спасибо.

require "openssl"

cloudfiles_folder = FOLDER_NAME
url_string = ASSET_URL_STRING_FROM_PAPERCLIP

method = "GET"
base_url, object_path = ("http://storage101.ord1.clouddrive.com/v1/MossoCloudFS_HIDING_REST_OF_URL/"+cloudfiles_folder+"/"+url_string ).split(/\/v1\//)

object_path = "/v1/" + object_path
seconds     = 1200
expires     = (Time.now + seconds).to_i
hmac_body   = "#{method}\n#{expires}\n#{object_path}"
sig         = OpenSSL::HMAC.hexdigest("sha1", ENV["RACKSPACE_TEMP_URL_KEY"], hmac_body)

puts ("#{base_url}#{object_path}?" + "temp_url_sig=#{sig}&temp_url_expires=#{expires}")

person ehay    schedule 13.06.2014    source источник


Ответы (1)


Ответ обманчиво прост: просто используйте HTTP.

Запросы Tempurl не подписаны протоколом — только тип запроса, срок действия и путь к объекту. Маркер, допустимый для HTTPS, в равной степени действителен для HTTP.

Если вы используете туман, вы можете легко сделать это, установив схему экземпляра на HTTP или передав scheme: 'http' в хэше параметров.

person colinm    schedule 13.06.2014
comment
Эй, Колин, я пробовал это, и я получаю сообщение об ошибке отказа в соединении. Я собираюсь добавить свой код в сообщение, пожалуйста, дайте мне знать, если вы обнаружите ошибку. Спасибо. - person ehay; 13.06.2014
comment
@ehay Круд. Хотя раньше это работало, после небольшого осмотра выяснилось, что появляется Rackspace больше не обслуживает облачные файлы через HTTP. Возможно, вы захотите проверить это в поддержке. Если вам не нужен контроль доступа, контейнеры с поддержкой CDN определенно поддерживают HTTP и загружаются гораздо быстрее. - person colinm; 14.06.2014
comment
Если вам нужен контроль доступа, Amazon CloudFront в настоящее время предлагает его. Я знаю, что обсуждались возможности управления доступом для Rackspace CDN, но, похоже, они никуда не делись. Вы можете принять участие в опросе CDN, чтобы выразить свою заинтересованность. - person colinm; 14.06.2014