← Cloudflare R2 / r2 / platform
Řešení potíží
Řešení problémů s chybami 403 a CORS v R2
Pokud se setkáváte s chybou CORS i přesto, že máte vše nastaveno správně, může vám pomoci tento průvodce řešením problémů.
Pokud v konzoli prohlížeče vidíte nad chybou CORS ještě chybu 401/403, jde o jiný problém, který s CORS nesouvisí.
Pokud problém s CORS skutečně máte, přečtěte si Řešení problémů s CORS.
Pokud používáte vlastní doménu
- Otevřete nástroje pro vývojáře ve svém prohlížeči.
- Přejděte na Síť kartě a najděte selhávající požadavek. Možná budete muset stránku znovu načíst, protože požadavky se zaznamenávají až po otevření nástrojů pro vývojáře.
- Zkontrolujte hlavičky odpovědi, zda obsahují následující dvě hlavičky:
cf-cache-statuscf-mitigated
Pokud máte cf-mitigated hlavička
Váš požadavek byl zablokován jedním z vašich pravidel WAF. Zkontrolujte své Security Events abyste zjistili příčinu blokování.
Pokud nemáte cf-cache-status hlavička
Váš požadavek byl zablokován Hotlink Protection.
Upravte nastavení Hotlink Protection pomocí Configuration Rule, nebo ji úplně zakažte.
Pokud používáte S3 API
Váš požadavek může být nesprávně podepsán. Lepší chybovou zprávu můžete získat vyzkoušením požadavku přes curl.
Funkční příklady podepisování S3 najdete na Příklady stránce.
Pokud se skutečně jedná o CORS
Zde jsou některé časté problémy s konfigurací CORS:
ExposeHeaderschybí hlavičky jakoETagAllowedHeaderschybí hlavičky jakoAuthorizationneboContent-TypeAllowedMethodschybí metody jakoPOST/PUT
Tokeny API na úrovni objektu nefungují s REST API
Pokud používáte token R2 API vytvořený pomocí Object Read & Write nebo Object Read only oprávnění vůči Cloudflare REST API (api.cloudflare.com), se ověření požadavků na objekt nezdaří a vrátí se jedna z následujících chyb:
- Když se token vztahuje na všechny buckety:
{"code":10002,"message":"Unauthorized"}(HTTP 401). - Když je token omezen na konkrétní buckety:
{"code":10000,"message":"Authentication error"}(HTTP 403).
Tokeny na úrovni objektu jsou podporovány pouze S3 kompatibilní API, které se ověřuje pomocí AWS Signature Version 4 (SigV4).
Chcete-li tento problém vyřešit:
- Chcete-li nadále používat token na úrovni objektu, provádějte požadavky na objekty prostřednictvím S3 kompatibilní API namísto REST API. API kompatibilní s S3 je také vhodnější pro operace s objekty: REST API je omezeno rychlostí.
- Chcete-li používat REST API, ověřte se pomocí Admin Read & Write nebo Admin Read only tokenu. Admin tokeny udělují přístup v rámci celého účtu, nikoli přístup omezený na konkrétní bucket.
Chyby HTTP 5XX a omezení kapacity Cloudflare R2
Pokud se setkáte s chybou HTTP 5XX, obvykle to znamená, že váš bucket Cloudflare R2 byl zahlcen příliš velkým počtem souběžných požadavků. Tyto chyby mohou vyvolat zámky čtení a zápisu pro celý bucket, což ovlivní výkon všech probíhajících operací.
Abyste se těmto výpadkům vyhnuli, je důležité zavést strategie pro řízení objemu požadavků.
Zde jsou některá opatření, která můžete použít:
Sledování souběžných požadavků
Sledujte počet souběžných požadavků na váš bucket. Pokud klient narazí na chybu 5XX, zajistěte, aby operaci zopakoval a komunikoval s ostatními klienty. Díky koordinaci mohou klienti společně zpomalit, čímž se sníží míra požadavků a udrží stabilnější tok úspěšných operací.
Pokud vaši uživatelé nahrávají přímo do bucketu (například pomocí S3 nebo Workers API), nemusíte být schopni sledovat ani vynucovat limit souběžnosti. V takovém případě doporučujeme sharding bucketů.
Sharding bucketů
Pokud potřebujete vyšší kapacitu a jste ochotni akceptovat vyšší složitost, zvažte sharding bucketů. Tento přístup rozkládá čtení a zápisy mezi více bucketů, čímž snižuje zátěž jednotlivého bucketu. Sharding sice nedokáže zabránit tomu, aby jeden vytížený objekt vyčerpal kapacitu, ale dokáže zmírnit celkový dopad a zlepšit odolnost systému.
Objekty s názvem This object is unnamed
V Cloudflare dashboardu si můžete zobrazit objekty s / v názvu jako složky výběrem Zobrazit prefixy jako adresáře.
Například objekt s názvem example/object se zobrazí následovně.
- example
- objekt
Názvy objektů, které končí na / způsobí, že dashboard Cloudflare zobrazí objekt jako složku s nepojmenovaným objektem uvnitř.
Pokud například nahrajete objekt s názvem example/ do R2 bucketu se zobrazí následovně.
- example
This object is unnamed