tigris presigned urls give access denied (using ExAws)

When I try to upload a presigned url using ExAws, I will get the following url:

https://fly.storage.tigris.dev/eduardo-backend-dev-prop-images-qhusfgll/temp/661ebfea-17f1-4943-88dd-d50fcd8965a5_profile.png?...

This will correctly upload the image to the bucket, but afterwards, if I try to display it in my page, it will give me AccessDenied error.

The reason is because the generated url has the bucket name after the url and not as a subdomain.

I should be able to fix that by using the param virtual_host: true during the presigned_url call, but, that way, the bucket name will be shown in the subdomain and I would be able to access the file by the url.

But now I get an error during the upload process:

create:1 Access to XMLHttpRequest at 'https://eduardo-backend-dev-prop-images-qhusfgll.fly.storage.tigris.dev/temp/4f2648a3-031e-4f19-9454-5409ae831c6d_profile.png?Content-Type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=tid_IS_mxZHCG_AUZWeM_rfSqIgofgMbtcJIrpKBr_hZyHIyDUlcSw%2F20250718%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250718T214454Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=eb07fd44b0377d2ab2f95a1912afa8ff3f3f45025badee777a736f9f3503f4a3' from origin 'https://eduardo-backend-dev.fly.dev' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721  PUT https://eduardo-backend-dev-prop-images-qhusfgll.fly.storage.tigris.dev/temp/4f2648a3-031e-4f19-9454-5409ae831c6d_profile.png?Content-Type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=tid_IS_mxZHCG_AUZWeM_rfSqIgofgMbtcJIrpKBr_hZyHIyDUlcSw%2F20250718%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250718T214454Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=eb07fd44b0377d2ab2f95a1912afa8ff3f3f45025badee777a736f9f3503f4a3 net::ERR_FAILED
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
S3 @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
initAdapterUpload @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:714
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
Promise.then
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
uploadFiles @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
onUnlock @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:714
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
Promise.then
pushInput @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
w @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
owner @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
withinTargets @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
exec_push @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
exec @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:715
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
owner @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
withinOwners @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
debounce @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:707
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
owner @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
withinOwners @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
debounce @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721
(anonymous) @ app-368ae2410464362c35571e4889b79eb8.js?vsn=d:721

Any idea on how to make this work?

Hi @sezaru1

https://fly.storage.tigris.dev/eduardo-backend-dev-prop-images-qhusfgll/temp/661ebfea-17f1-4943-88dd-d50fcd8965a5_profile.png?...

Can you show the full URL with signature hidden?