简体   繁体   English

Rackspace CloudFiles HTTP临时URL(非HTTPS)

[英]Rackspace CloudFiles HTTP Temp URL (Not HTTPS)

I have a rails application that allows users to upload audio and video. 我有一个Rails应用程序,它允许用户上传音频和视频。 The audio and video are then delivered to our HTML5 App. 然后,音频和视频将传递到我们的HTML5应用。 We are using rackspace CloudFiles (private) to store all of the file and everything works nicely. 我们使用机架空间CloudFiles(私有)来存储所有文件,并且一切正常。

The problem is trying to get the video to Android users (Android doesn't like to play HTTPS media files). 问题是试图将视频提供给Android用户(Android不喜欢播放HTTPS媒体文件)。

To solve this I am looking for a way to create the temp url without an HTTPS link. 为了解决这个问题,我正在寻找一种无需HTTPS链接即可创建临时URL的方法。

Any help wold be greatly appreciated. 任何帮助将不胜感激。

Thanks. 谢谢。

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}")

The answer's deceptively simple: Just use HTTP. 答案看似简单:只需使用HTTP。

Tempurl requests are not signed with the protocol —only the request type, expiry, and object path. Tempurl请求不使用协议签名,仅使用请求类型,到期时间和对象路径签名 A token that's valid for HTTPS is equally valid for HTTP. 对HTTPS有效的令牌对HTTP同样有效。

If you're using fog, you can easily do this by setting the instance scheme to HTTP or passing scheme: 'http' in your options hash. 如果您使用的是Fog,可以通过将实例方案设置为HTTP或在选项哈希中传递scheme: 'http'来轻松实现此目的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM