我是否需要对作为POST表单参数传递的字符串(例如URL)进行编码?
即我想将我拥有的URL传递给我的Web应用程序(ruby on rails)作为表单参数之一。那么URL / URI中是否有任何需要编码的潜在字符?或者也许rails会处理这个问题?
答案 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.encode
和URI.decode
:
>> URI.encode('google.com', /\W/)
"google%2Ecom"
>> URI.decode('google%2Ecom')
"google.com"
答案 2 :(得分:0)
作为一般性陈述,如果您将编程或用户输入数据发送到HTML页面,则应对其进行HTML编码。请记住,URL通常具有&即使浏览器似乎可以处理它,也应对其进行编码。
我不是Ruby人,所以我不知道你是如何在Ruby中做到这一点的,我也不熟悉Ruby on Rails来说它是否会这样做(虽然我会有点意外) ,但我建议的指南不是语言特定的。