我在使用 Google Cloud Storage 时遇到了一些非常奇怪的错误。
我将一个 1MB 的全零文件上传到存储桶,每当我使用 http 下载它时,我都会获得与使用 https 下载(获取正确的文件)不同的文件(不同的内容、不同的 md5、相同的大小)。
真正的MD5是:b6d81b360a5672d80c27430f39153e2c
示例:(你可以在家尝试一下)
wget http://storage.googleapis.com/weirdbug/test1m.test
md5 test1m.test
// MD5 (test1m.test) = 0575922c3eda2ae6fb2865cc136f65ee
rm test1m.test
wget https://storage.googleapis.com/weirdbug/test1m.test
md5 test1m.test
// MD5 (test1m.test) = b6d81b360a5672d80c27430f39153e2c
我想相信我做错了什么,但我似乎无法弄清楚。
有什么想法吗?我认为 GCE 存储应该可以同样适用于 HTTP 和 HTTPS。
答案1
对于完全由零字节组成的 1 兆字节文件,正确的 MD5 和是 b6d81b360a5672d80c27430f39153e2c(您在 HTTPS 中看到的那个),因此您的 HTTP wget 出了问题。我想知道您是否有代理或其他东西将垃圾插入到您的响应中,而您的 HTTPS 请求不会发生这种情况。
这是我尝试时看到的:
$> dd if=/dev/zero of=/tmp/test1m.test bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00866687 s, 121 MB/s
$> md5sum /tmp/test1m.test
b6d81b360a5672d80c27430f39153e2c /tmp/test1m.test
$> gsutil cp -a public-read /tmp/test1m.test gs://special-test/
Copying file:///tmp/test1m.test [Content-Type=application/octet-stream]...
Uploading gs://special-test/test1m.test: 1 MiB/1 MiB
$> wget http://storage.googleapis.com/yarbrough-test/test1m.test
$> md5sum test1m.test
b6d81b360a5672d80c27430f39153e2c test1m.test