AWS S3 HTTP POST-使用URL中的参数重定向到页面

时间:2019-01-04 17:03:55

标签: amazon-web-services amazon-s3

我有将图像上传到S3的表格,并且效果很好。但是,对于success_action_redirect键,我想有一个使用以下形式的模板变量的URL,即

{"success_action_redirect": "localhost/account/{{account.id}}"},

我似乎无法在我的帖子政策中使用它。有办法解决吗?

编辑:

以下是相关行:

<input type="hidden" name="success_action_redirect" value="http://localhost:8000/account/{{account.id}}">

我假设它不起作用,因为{{account.id}}返回了一个数字,因此当S3尝试将其与签名进行比较时,它会将http://localhost:8000/accounts/2http://localhost:8000/accounts/{{account.id}}"之类的东西进行比较。

它返回错误:

Invalid according to Policy: Policy Condition failed: ["eq", "$success_action_redirect", "http://localhost:8000/account/{{account.id}}"]

此外,我尝试使用{% templatetag %}阻止{{account.id}}成为变量,尽管它通过了S3,但(显然)它没有重定向到正确的页面。

1 个答案:

答案 0 :(得分:3)

在您的策略中,您必须使用starts-with而不是$eq来允许成功操作重定向URL匹配前缀。

因此您的政策可能如下:

["starts-with", "$success_action_redirect", "localhost/account/"],

请参阅政策文档:

https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html#sigv4-ConditionMatching