You would need to not use a custom domain or do the auth yourself in a worker or some other means be
You would need to not use a custom domain or do the auth yourself in a worker or some other means before the request goes through to r2

https://${accountId}.r2.cloudflarestorage.com/${bucketName}/${encodedFileName}?uid=${encodeURIComponent(accountId)}&exp=${Math.round(expiration.getTime() / 1000)}&signature=${signature};2024/12/01 10:33:52 ERROR : /: Dir.Stat error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied
2024/12/01 10:33:52 ERROR : IO error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied
2024/12/01 10:33:57 ERROR : /: Dir.Stat error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied*.r2.cloudflarestorage.com really only support HTTP1? There's no HTTP2 or QUIC support on those domains? (I'm getting a Chrome net::ERR_H2_OR_QUIC_REQUIRED error when trying to do a fetch upload with duplex: "half")
curl https://api.cloudflare.com/client/v4/user/tokens/verify), but when I try to call https://api.cloudflare.com/client/v4/accounts/<id>/r2/buckets/<bucket name>/sippy, I'm getting an authetnication error.com.cloudflare.edge.r2.bucket.<account id>_<jurisdiction>_<bucket name>; maybe that syntax is incorrect?--no-sign-request ?
openssl s_client -connect c2cb23ce609ba91a6a649d90f7ca72b3.r2.cloudflarestorage.com:443
Connecting to 162.159.140.238
CONNECTED(00000006)
008CC1F101000000:error:0A000410:SSL routines:ssl3_read_bytes:ssl/tls alert handshake failure:ssl/record/rec_layer_s3.c:908:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 368 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Protocol: TLSv1.3
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---https://${accountId}.r2.cloudflarestorage.com/${bucketName}/${encodedFileName}?uid=${encodeURIComponent(accountId)}&exp=${Math.round(expiration.getTime() / 1000)}&signature=${signature}Access to fetch at 'https://343836b9a1933af53d195c2d778a27d0.r2.cloudflarestorage.com/project1/email_verify_hero.json?uid=343836b9a1933af53d195c2d778a27d0&exp=1733057758&signature=dd245094b0d73d23f0c513f342e52e32b1bec065763d72bd11335408804e16d8' from origin 'http://localhost.com:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
upload.vue:62
PUT https://343836b9a1933af53d195c2d778a27d0.r2.cloudflarestorage.com/project1/email_verify_hero.json?uid=343836b9a1933af53d195c2d778a27d0&exp=1733057758&signature=dd245094b0d73d23f0c513f342e52e32b1bec065763d72bd11335408804e16d8 net::ERR_FAILED 400 (Bad Request)
handleFileUpload @ upload.vue:62
await in handleFileUpload
callWithErrorHandling @ runtime-core.esm-bundler.js:193
callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:201
invoker @ runtime-dom.esm-bundler.js:671Understand this errorAI
upload.vue:69 TypeError: Failed to fetch
at handleFileUpload (upload.vue:62:13)2024/12/01 10:33:52 ERROR : /: Dir.Stat error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied
2024/12/01 10:33:52 ERROR : IO error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied
2024/12/01 10:33:57 ERROR : /: Dir.Stat error: operation error S3: ListObjects, https response error StatusCode: 403, RequestID: , HostID: , api error AccessDenied: Access Denied*.r2.cloudflarestorage.comnet::ERR_H2_OR_QUIC_REQUIREDduplex: "half"curl https://api.cloudflare.com/client/v4/user/tokens/verifyhttps://api.cloudflare.com/client/v4/accounts/<id>/r2/buckets/<bucket name>/sippycom.cloudflare.edge.r2.bucket.<account id>_<jurisdiction>_<bucket name>--no-sign-requestasync function getObjectOrDefault(env: any, objId: string) {
let object = await env.WISHES_BUCKET.get(objId as string);
if (object === null) {
console.error('Object Not Found', objId);