İçeriğe geç

Sorun giderme

Köprü, üç özel durum türü tetikler. Yakaladığınız özel durum, neyin başarısız olduğunu ve yeniden denemeniz mi yoksa yedek kullanmanız mı gerektiğini gösterir. Aşağıdaki mesaj parçalarının her biri kaynaktan gelir.

Özel durumTürettiği sınıfAnlamı
CloudflareNotAvailableExceptionNextPDF\Exception\NextPdfExceptionKöprü uç ağa ulaşamaz veya yapılandırma eksiktir ve kullanılabilir bir yedek yoktur.
CloudflareRenderExceptionNextPDF\Exception\NextPdfExceptionWorker yanıt verdi, ancak işleme başarısız oldu (Hypertext Transfer Protocol (HTTP) hatası veya hatalı biçimli gövde). Hiçbir zaman yedeğe geçmez.
InvalidSpkiPinExceptionInvalidArgumentExceptionYapılandırılmış bir Subject Public Key Info (SPKI) sabitleme dizesi hatalı biçimlidir.

CloudflareSecurityPolicy, girdi ve Uniform Resource Locator (URL) ilkesi ihlallerinde ayrıca doğrudan RuntimeException tetikler. Bu, herhangi bir istek gönderilmeden önce gerçekleşir.

Mesaj parçasıTetikleyenNedenÇözüm
incomplete (missing worker_url or api_token)İşleyici (yedek yolu üzerinden)Ya workerUrl ya da apiToken boşHer ikisini de ayarlayın, ardından isValid() ile doğrulayın.
HTML input exceeds maximum sizeCloudflareSecurityPolicy::validate()Hypertext Markup Language (HTML) girdisi şu değerden daha uzun: maxHtmlSizeGirdiyi azaltın veya maxHtmlSize değerini bilinçli olarak yükseltin.
Base64 data URI exceeds safety limitCloudflareSecurityPolicy::validate()Bir data:;base64, Uniform Resource Identifier (URI) değerinin 13631488 baytı aştığı tahmin ediliyorVarlığı dışarı taşıyın; büyük ikili dosyaları satır içine yerleştirmeyin.
meta-refresh redirect which could cause SSRFCloudflareSecurityPolicy::validate()Bir <meta http-equiv="refresh"> etiketi sunucu taraflı istek sahteciliğini (SSRF) tetikleyebilirEtiketi kaldırın; işlenen HTML dışında sunucu taraflı bir yönlendirme kullanın.
Invalid Worker URLvalidateWorkerUrl()URL ayrıştırılamıyor veya scheme/host bilgisi eksikHypertext Transfer Protocol Secure (HTTPS) kullanan eksiksiz ve mutlak bir URL sağlayın.
Worker URL must use HTTPSvalidateWorkerUrl()Şema HTTPS değilŞunu kullanın: https://.
private or reserved IP addressesvalidateWorkerUrl()Internet Protocol (IP) sabit değeri Request for Comments (RFC) 1918 / geri döngü / RFC 3927 aralığındaGenel bir uç noktayı hedefleyin.
hostname resolves to a private or reserved IPvalidateWorkerUrl()Çözümlenen bir Domain Name System (DNS) A/AAAA kaydı özel veya ayrılmışDNS’yi düzeltin; olası yeniden bağlamayı araştırın.
DNS answer changed since validationassertPinsStillValid()Ana bilgisayar, denetim ile gönderim arasında yeni bir IP adresine çözümlendiYeniden çözümleyin; olası bir yeniden bağlama girişimi olarak değerlendirin.

Bunlar CloudflareRenderException hatalarıdır. Worker yanıt verdi, ancak işlemenin kendisi başarısız oldu. Bunlar hiçbir zaman yerel yedeği tetiklemez çünkü uç ağa erişilebilmiştir.

Mesaj parçasıNeden
Cloudflare Worker returned HTTP <code>: <detail>Durum kodu 200 değil. Ayrıntı, JavaScript Object Notation (JSON) error alanından veya gövdenin ilk 200 baytından gelir.
Worker returned empty or invalid PDF dataİkili yanıt %PDF ile başlamıyor.
Worker error: <message>Bir error alanı içeren JSON yanıtı.
JSON response missing "pdf" fieldİçinde pdf alanı bulunmayan JSON yanıtı.
Invalid base64-encoded PDF in JSON responseİçindeki pdf alanı, base64 çözüldüğünde %PDF ile başlayan baytlara dönüşmedi.
Invalid JSON response from WorkerGövde Content-Type: application/json kullanıyor ancak bir diziye dönüşmüyor.
Unexpected Content-Type from Worker: <type>Bir 200 yanıtı; Content-Type değeri ne application/pdf ne de application/json.

Bunlardan birini yakaladığınızda Worker günlüklerini inceleyin. Hata Worker tarafındadır; köprüden kaynaklanmaz.

Bunlar CloudflareNotAvailableException hatalarıdır. Köprü uç ağı kullanamadı ve hiçbir yedek bir Portable Document Format (PDF) dosyası üretmedi.

Mesaj parçasıNedenÇözüm
Cloudflare Worker unavailable: <reason>Yedek devre dışıyken aktarım hatasıŞunu etkinleştirin: fallbackToLocal, ardından bir fabrika bağlayın veya bağlantıyı düzeltin.
Artisan is installed but no LocalRendererFactoryInterface was providednextpdf/artisan mevcut ancak hiçbir fabrika sağlanmadıYapıcıya bir LocalRendererFactoryInterface geçirin.
local Chrome fallback (nextpdf/artisan) is not installedYedek etkin, hiçbir fabrika yapılandırılmamış ve Artisan yokÖnce composer require nextpdf/artisan komutunu çalıştırın, ardından bir fabrika bağlayın.

PHP Standards Recommendation (PSR)-3 uyumlu bir günlükleyici sağladığınızda ve yedek yolu çalıştığında köprü bir warning (Cloudflare render failed, attempting fallback), ardından bir info (Falling back to local renderer) günlüğe kaydeder.

BelirtiNedenÇözüm
InvalidSpkiPinException: Invalid SPKI pin formatBir sabitleme sha256/<base64> (veya sha256//<base64>) biçiminde değilSabitleme dizesini düzeltin.
cURL transport error (<n>): <msg>cURL düzeyinde hata (Transport Layer Security (TLS), DNS, zaman aşımı)cURL hata numarasını inceleyin; sabitlemeler ayarlanmışsa sunulan SPKI’nin hâlâ sabitlenmiş olduğunu doğrulayın.
Sertifika döndürmesinin hemen ardından işlemeler başarısız oluyorYeni sertifikanın SPKI değeri sabitleme kümesinde değilDöndürmeden önce yeni SPKI değerini yedek sabitleme olarak ekleyin.
Sabitlemeler yapılandırılmış olmasına rağmen sabitlenmiş aktarım kullanılmıyorHiçbir PSR-17 ResponseFactory sağlanmadıBir ResponseFactory geçirin; sabitlenmiş aktarım bunu gerektirir.

isAvailable() hiçbir zaman özel durum tetiklemez. false değerini, yapılandırma geçersizse ya da HEAD yoklaması başarısız olur veya bir özel durum tetiklerse döndürür. true değerini yalnızca yoklama 500 değerinin altında bir durumla yanıt verdiğinde döndürür. true sonucu yalnızca bir ipucudur: sonraki POST yine de yukarıdaki Worker taraflı hatalardan biriyle başarısız olabilir. Başarılı bir yoklamayı garanti olarak değerlendirmeyin.

ApiProtection, sınırları işlem başına bellekte tutar. Sayımlar yeniden başlatmadan sonra korunmaz ve işleyiciler ya da düğümler arasında paylaşılmaz. Bir düğüm bir istemciye izin verirken başka bir düğüm onu reddederse bu beklenen bir durumdur. Küme genelinde sınır uygulamak için sınırlayıcının önüne paylaşılan bir depo yerleştirin.

  • /integrations/cloudflare/security-and-operations/ — bu mesajların dayandığı operasyonel çalıştırma kılavuzu ve denetimler.
  • /integrations/cloudflare/quickstart/ — standart try/catch deseni.
  • /integrations/cloudflare/production-usage/ — yedek bağlama ayrıntıları.