首页 文章

如何在HTML表单提交中停止百分比编码

提问于
浏览
0

我试图让我的网站用户能够从Amazon S3下载文件 . URL由我的Web服务器上的AWS私钥进行数字签名,而不是通过AJAX发送到客户端并嵌入到html表单的action属性中 .

提交表单时出现问题 . 表单的action属性包含一个具有数字签名的url . 此签名通常包含 + 符号,这些符号将进行百分比编码 . 它完全使签名无效 . 如何保持表单不受编码我的网址?

1 回答

  • 1

    我(尊敬地)建议你需要更仔细地确定问题的确切性质,在流程中它崩溃的地方,并确切地确定你实际需要修复的是什么 . 对于浏览器来说,URLE的编码是正确的,因为查询字符串中的文字“”被服务器正确地解释为“”(空格) .

    您的问题促使我查看我编写的代码,为S3生成签名的网址,我的回忆是正确的 - 我正在将''更改为%2B,'='更改为%3D,并将'/'更改为%2F签名......所以这不是无效的 . 这假设我们正在谈论同样的事情,这样你在问题中提到的“数字签名”就是这里讨论的签名:

    http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth

    请注意,示例中的签名中包含urlencoded '+':Signature = vjbyPxybdZaNmGa %2B yT272YEAiv4%3D

    我会推测你遇到的问题可能不是''→'%2B'(这应该不仅是有效的,而是必需的)......但也许这是一种双重编码,这样你在某些时候,对它进行双重编码,以便''→'%2B'→'%252B'...将百分号编码为文字,这会破坏签名 .

相关问题