我有一个rails应用程序,允许用户上传音频和视频。然后将音频和视频传送到我们的HTML5应用程序。我们使用rackspace CloudFiles(私有)来存储所有文件,一切都运行良好。
这个问题是试图把视频给Android用户(Android不喜欢播放HTTPS媒体文件)。
为了解决这个问题,我正在寻找一种方法来创建没有HTTPS链接的临时url。
任何帮助都将非常感激。
谢谢。
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}")
答案看起来很简单:只要使用HTTP。
Tempurl请求不使用协议签名,只使用请求类型、过期和对象路径签名。对HTTPS有效的令牌对HTTP也同样有效。
如果你正在使用fog,你可以通过将实例方案设置为HTTP或在你的选项哈希中传递scheme: 'http'
来轻松做到这一点。