首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:加号登录GET-Request替换为空格

Rails:加号登录GET-Request替换为空格
EN

Stack Overflow用户
提问于 2011-06-24 15:51:49
回答 2查看 9K关注 0票数 20

在Rails3 (Ruby 1.9.2)中,我发送一个请求

代码语言:javascript
复制
 Started GET "/controller/action?path=/41_+"

但参数列表如下所示:

代码语言:javascript
复制
 {"path"=>"/41_ ",
   "controller"=>"controller",
   "action"=>"action"}

这里出了什么问题?-*.符号工作正常,它只是+,它将被空格取代。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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加号字符(+)。

票数 28
EN

Stack Overflow用户

发布于 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连接)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6464885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档