我是否需要对作为POST表单参数传递的字符串(例如URL)进行编码

时间:2009-09-30 23:23:35

标签: ruby-on-rails url encoding post uri

我是否需要对作为POST表单参数传递的字符串(例如URL)进行编码?

即我想将我拥有的URL传递给我的Web应用程序(ruby on rails)作为表单参数之一。那么URL / URI中是否有任何需要编码的潜在字符?或者也许rails会处理这个问题?

3 个答案:

答案 0 :(得分:3)

  

我是否需要对作为POST表单参数传递的字符串(例如URL)进行编码?

这取决于您用于创建/发送POST请求的内容。如果您自己直接创建请求正文,那么您必须对每个参数进行URL编码:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&url=http://www.example.com/url?innerparameter1=1&innerparameter2=2

这不好:innerparameter2实际上是外部表单编码字符串的参数。它需要编码,看起来像:

foo=bar&url=http%3A//www.example.com/url%3Finnerparameter1%3D1%26innerparameter2%3D2

但是,如果你使用更高级别的东西来发出POST请求,并传递某种参数字符串的映射,我希望该组件能够为你处理URL编码。

码?

答案 1 :(得分:1)

正如bobince所提到的,您需要将您传递的任何数据编码为URL参数。通常你正在使用的任何图书馆都会照顾到这一点。这适用于所有HTTP请求BTW。

例如,API具有端点GET /sites/:name。 使用cURL它应该看起来像

curl http://example.com/sites/google%2Ecom

在Ruby / Rails中,您可以使用URI.encodeURI.decode

>> URI.encode('google.com', /\W/)
"google%2Ecom"
>> URI.decode('google%2Ecom')
"google.com"

答案 2 :(得分:0)

作为一般性陈述,如果您将编程或用户输入数据发送到HTML页面,则应对其进行HTML编码。请记住,URL通常具有&即使浏览器似乎可以处理它,也应对其进行编码。

我不是Ruby人,所以我不知道你是如何在Ruby中做到这一点的,我也不熟悉Ruby on Rails来说它是否会这样做(虽然我会有点意外) ,但我建议的指南不是语言特定的。