本地主机和 Cloudflare R2 预签名 URL

问题描述 投票:0回答:1

我需要一些帮助来配置 R2 以进行本地开发。我需要能够将 R2 预签名 URL 与 localhost 一起使用。

目前,从本地主机获取预签名 URL 时,我不断遇到 CORS 问题:

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.

但是,从我的托管域中提取工作完全正常,没有 CORS 问题。

检查请求后,从

Access-Control-Allow-Origin:*
获取时,R2 的响应确实包含
mydomain.com
标头,但从
localhost
获取时不包含它。

因为这仅适用于开发人员,所以我尝试使用

no-cors
模式,但这不适用于 PUT 请求。

阅读支持论坛和博客文章后,我的 R2 CORS 政策如下:

[
  {
    "AllowedOrigins": [
      "http://localhost:3000",
      "https://localhost:3000",
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "HEAD",
      "PUT",
      "DELETE"
    ],
    "AllowedHeaders": [
      "Content-Type",
      "Access-Control-Allow-Origin",
      "Referer",
      "User-Agent"
    ],
    "ExposeHeaders": [
      "Content-Type",
      "Access-Control-Allow-Origin",
      "ETag"
    ],
    "MaxAgeSeconds": 3600
  }
]

我还尝试在 https 上运行 localhost,以防万一但无济于事:((对于感兴趣的人使用

mkcert

我现在没主意了^^

任何帮助或建议将不胜感激!

cors localhost pre-signed-url cloudflare-r2
1个回答
0
投票

找到了使用浏览器扩展来更改请求标头的解决方案。

对于 Google Chrome,我发现 this 运行得很好。只需确保请求发生时扩展程序已打开即可。

要让您的预签名 URL 和 R2 绑定的工作人员定位同一个存储桶,您需要运行

wrangler dev --remote
并将
preview_bucket_name
添加到
wrangler.toml
,如下所示:

// wrangler.toml

[...]

[[r2_buckets]]
binding = "R2_BUCKET"
bucket_name = "my-r2"
preview_bucket_name = "my-r2" # same as bucket_name
© www.soinside.com 2019 - 2024. All rights reserved.