我想对网址(http://www.someurl.com)进行编码,以便将其作为参数添加到GET调用中:
domain.com/encoded_url
一旦收到另一端,我需要能够解码网址,但是,安全性不是问题。我宁愿坚持使用简单的密码(必须能够处理像':'和'?'这样的特殊字符),因为更高级的密码会生成编码字符串,这些字符串不会作为有效的URI字符串传递,也不能作为URL参数传递。
Ruby中实现的哪种密码最适合此目的?
答案 0 :(得分:8)
使用Base64是一个好主意,Ruby提供了URL安全实现,因为默认会生成像+和=这样的字符。 urlsafe_encode64
将使用' - '而不是'+'而不是'+',因此可以像URL参数一样传递它们。
require "base64"
encoded_url = Base64.urlsafe_encode64('http://www.someurl.com', ) #=> "aHR0cDovL3d3dy5zb21ldXJsLmNvbQ=="
decoded_url = Base64.urlsafe_decode64(encoded_url) #=> "http://www.someurl.com"
答案 1 :(得分:1)
如果您确实需要对其进行编码并且安全性不是问题,那么只需使用Base64
然后URI将其转义即可。
但是没有必要,只是uri逃避它。
str = Base64.encode64(url)
encoded_str = URI.encode(str)