Amazon web services SQS接收消息请求
我试图使用Amazon web services SQS接收消息请求,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我试图使用V4签名编写POST请求,从C++中的SQS服务器获取消息,POST消息如下所示 POST/134148934511/Localhost/?Action=ReceiveMessage&SignatureMethod=AWS4-HMAC-SHA256&SignatureVersion=4&Version=2012-11-05&X-Amz-Credential=AKIAI21OTNJCTG12UP7NA/20140602/us-east-1/sqs/AWS4_请求&X-Amz-Date=2
V4
签名编写POST
请求,从C++
中的SQS
服务器获取消息,POST
消息如下所示
POST/134148934511/Localhost/?Action=ReceiveMessage&SignatureMethod=AWS4-HMAC-SHA256&SignatureVersion=4&Version=2012-11-05&X-Amz-Credential=AKIAI21OTNJCTG12UP7NA/20140602/us-east-1/sqs/AWS4_请求&X-Amz-Date=20140602T152045Z&X-Amz-Content-SHA256=E3B0C44298FC149AFB8996FB927AE41E464B494CA499EDB78855&X-Amz-Amz-host=签名主机;x-amz-content-sha256;x-amz-date&Signature=6fada82dcfa52392bd15d29946115e34e1f2485fe87a59cead8320fa05bcea67 HTTP/1.1
主持人:sqs.us-east-1.amazonaws.com
接受:/
内容长度:0
内容类型:application/x-www-form-urlencoded
但我收到了一条403禁止
错误消息(尽管我拥有所需的权限)。
(我确信aws版本4的签名过程是正确的(用S3检查))
我做错了什么?回答我自己的问题 上述要求中几乎没有什么错误 a) 在POST请求中,您不将查询参数包含在URL中,而是将其添加到正文本身(这也通过标题“Content-Type:application/x-www-form-urlencoded”指示给服务器) b) 始终记住在创建签名时将所有头添加到curl请求中,否则它将抛出“签名不匹配”错误