URL编码%20 vs%201的AWS签名问题?

时间:2014-08-10 07:34:48

标签: select amazon-web-services signature url-encoding amazon-simpledb

我在发送SELECT请求时遇到了AWS SimpleDB签名问题而且我很难过。最糟糕的是,它似乎表现不一致。

当我选择如下时,它很好并且完美地工作: select itemName() from Race limit 3 编码为select%20itemName%28%29%20from%20Race%20limit%203 - 当然在签名之前添加所有其他属性。

当我将SELECT限制更改为1(而不是3)select itemName() from Race limit 1时,它将编码为select%20itemName%28%29%20from%20Race%20limit%201,并且当我向AWS提交查询时,签名不匹配(其他所有内容都相同)。< / p>

我的理论是,最后四个字符被读作%201而不是%20后跟1 - 这可能吗?如果是这样,是否有可能围绕它进行“编码”?

2 个答案:

答案 0 :(得分:0)

  

我的理论是,最后四个字符被读作%201   而不是%20后跟1 - 这可能吗?如果是的话,是吗?   可能围绕它“编码”?

你的理论是正确的。尝试这样的事情:

从种族限制1中选择itemName(),将其编码为选择%20itemName%28%29%20来自%20Race%20limit%20%31

答案 1 :(得分:0)

我已经到底了...

这不是编码问题 - 在%之后只能有两个字符,因此AWS将其视为%20和1.问题是将结果限制为1强制AWS包含分页响应中的令牌。限制为3没有返回令牌(只有3个结果)。

似乎我使用的软件(CoronaSDK)在包含令牌并且没有将其提供给我的应用程序时会对内容造成阻塞。