AWS S3 HTTP POST - перенаправление на страницу с параметром в URL - PullRequest
0 голосов
/ 04 января 2019

У меня есть форма, которая загружает изображение в 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/2 с http://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 голосов
/ 04 января 2019

В вашей политике вы должны использовать starts-with, а не $eq, чтобы ваш URL-адрес перенаправления успешного действия совпадал с префиксом.

Таким образом, ваша политика может выглядеть следующим образом:

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

См. Политическую документацию:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...