Invalid according to Policy: Extra input fields: content-type S3 Presigned URL

If you receive the following error when trying to store an object in Amazon S3:

<Error>
<Code>AccessDenied</Code>
<Message>Invalid according to Policy: Extra input fields: content-type</Message>
<RequestId>SomeCrazyString</RequestId>
<HostId>AnotherCrazyString</HostId>
</Error>

It's because the policy used to generate the pre-signed POST request did not have content-type as one of the permissible fields.  Set it like so:

[["starts-with", "$Content-Type", ""]]
An empty string tells S3 to allow any content-type, but you can certainly be more specific.
Show Comments