阅读并遵循Signing AWS Requests with Signature Version 4上的所有说明后,我设法创建了使用REST API连接DynamoDB的JavaScript API。
当浏览器允许设置自定义标题时,它可以正常工作,但是不支持此功能的旧浏览器(如IE 6)呢?
我已成功将所有身份验证信息编码在请求的网址中,但我似乎错过了X-Amz-Target
标头的替代。
以下是一个示例网址:
https://dynamodb.us-east-1.amazonaws.com/
?X-Amz-Target=DynamoDB_20120810.Scan
&X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=xxxxxxxxx%2F20151216%2Fus-east-1%2Fdynamodb%2Faws4_request
&X-Amz-Date=20151216T182124Z
&X-Amz-SignedHeaders=host%3Bx-amz-date
&X-Amz-Signature=xxxxxxxxxxxxxx
正如您所看到的,我添加了查询参数X-Amz-Target
,希望它会替换X-Amz-Target
标头,但它似乎无法正常工作。
我收到以下回复:
{
"__type":"com.amazon.coral.service#UnknownOperationException"
}
这表明X-Amz-Target
显然没有被阅读。
现在,这并不能保证我甚至无法正确发送我的身份验证信息,因为只有在其他一切都很好的情况下,AWS才会总是抱怨授权。 (虽然使用标题时同样的算法也有效,所以我想不出它为什么会失败)
说实话,我的问题是:如何通过查询参数而不是通过自定义标头使用DynamoDB Rest API?