在Rails3 (Ruby 1.9.2)中,我发送一个请求
Started GET "/controller/action?path=/41_+"但参数列表如下所示:
{"path"=>"/41_ ",
"controller"=>"controller",
"action"=>"action"}这里出了什么问题?-、*或.符号工作正常,它只是+,它将被空格取代。
发布于 2011-06-24 15:59:10
这是普通的URL编码,the plus sign is a shorthand for a space
在查询字符串中,加号保留为空格的速记符号。因此,必须对实加号进行编码。此方法用于使查询URI更易于在不允许使用空格的系统中传递。
来自HTML5 standard的
The character is a U+0020 SPACE character (字符是空格字符
将字符替换为单个U+002B加号字符(+)。
发布于 2015-04-29 20:17:14
POST请求的,(如果你们中的一些人像我一样偶然发现了这个问题),人们可能会遇到这个问题,因为在客户端以错误的方式编码数据。根据标准的RFC1738,将数据编码为application/x-www-form-urlencoded将告诉rails在解码URL时解码数据,因此将+号替换为空格,因为@mu的explained太短了
解决方案是将客户端上的数据编码为multipart/form-data。
在PHP中,使用cURL,这是通过考虑以下陷阱来完成的:
将数组传递给CURLOPT_POSTFIELDS将把数据编码为multipart/form- data,而传递URL编码的字符串将把数据编码为
/x-www-form-urlencoded。http://php.net/manual/en/function.curl-setopt.php
您可能想知道为什么我要在客户端使用PHP (这是因为我的示例中的客户端是另一个was服务器,因为我使用的是API连接)。
https://stackoverflow.com/questions/6464885
复制相似问题