我只是想知道这是一个错误还是我错误地使用了 sdk。
Presigned URL 生成代码如下:
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60; // Add 1 hour.
expiration.setTime(milliSeconds);
URL url = s3.generatePresignedUrl(userPicturesBucket, "walala", expiration, HttpMethod.PUT);
但这会在“签名”错误的地方生成一个预签名的 ulr。
签名=7iw7DfZ3Ed24kQpsV5Hp9VrJ%2BMo%3D
我可以通过使用 RESTClient 在完整地址上发送 PUT 请求来测试这一点。我会收到一个禁止回复,说SignatureDoesNotMatch。
但是,如果我使用Amazon S3 签名测试器签署相同的请求,我将获得不同的“签名”
签名=ztp2nD6gVurYhAvQojpZhReSuwE%3D
然而,这个确实有效,发送 PUT 请求将返回 200 响应,并且将创建对象。
我的问题是,这是针对 java 错误的亚马逊 sdk 吗?或者为什么签名不同。
谢谢