Tag: url encoding

如何在Rails中禁用cookie的URL编码

我有一个Rails应用程序,必须与一个非常古老的遗留应用程序共存。 旧应用程序查找具有包含特定字符串的值的cookie。 不幸的是,遗留cookie中的字符通常包含斜杠。 我遇到的问题是,当Rails应用程序写入cookie时,它首先执行URL编码,导致旧应用程序因为cookie值不正确而中断。 我通过编辑文件cookie_performance_fix.rb (路径: ./actionpack-1.13.5/lib/action_controller/cgi_ext/cookie_performance_fix.rb cookie_performance_fix.rb )在Rails 1.13.5中工作了 为了使这个工作,我改变了代码,如下所示: def to_s buf = “” buf << @name << '=' if @value.kind_of?(String) rails code. #buf << CGI::escape(@value) buf << @value else #buf << @value.collect{|v| CGI::escape(v) }.join("&") buf << @value.collect{|v| (v) }.join("&") end 这实际上工作正常,直到我决定将Rails升级到版本2.3.2 在Rails 2.3.2中, cookie_performance_fix.rb文件不再存在。 我查看了同一个目录,发现了一个名为cookie.rb的文件,我尝试以类似的方式进行修改。 def to_s buf = ” buf << […]

大括号的URL编码问题

我在从GitHub Archive获取数据时遇到问题。 主要问题是我在URL中编码{}和..问题。 也许我误读了Github API或者没有正确理解编码。 require ‘open-uri’ require ‘faraday’ conn = Faraday.new(:url => ‘http://data.githubarchive.org/’) do |faraday| faraday.request :url_encoded # form-encode POST params faraday.response :logger # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end #query = ‘2015-01-01-15.json.gz’ #this one works!! query = ‘2015-01-01-{0..23}.json.gz’ #this one doesn’t work encoded_query = URI.encode(query) response = […]

为什么我必须为net :: HTTP请求提供URI.encode甚至安全字符?

我试图使用Net :: HTTP向Twitter发送GET请求(因隐私原因而替换用户ID): url = URI.parse(“http://api.twitter.com/1/friends/ids.json?user_id=12345”) resp = Net::HTTP.get_response(url) 这会在Net :: HTTP中引发exception: NoMethodError:未定义的方法为empty?’ for # from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:in empty?’ for # from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1470:in initialize’ 巧合的是,我偶然发现了一个类似的代码片段,它在URI.encode之前使用了URI.parse ,所以我复制了它并再次尝试: url = URI.parse(URI.encode(“http://api.twitter.com/1/friends/ids.json?user_id=12345”)) resp = Net::HTTP.get_response(url) 现在它工作正常,但为什么? 在我提到的URL中没有需要转义的保留字符,为什么我必须调用URI.encode才能成功获取get_response ?