NextPDF Cloudflare edge-rendering-bridge — overzicht
In een oogopslag
Sectie met titel “In een oogopslag”nextpdf/cloudflare is een edge-rendering-bridge. Uw PHP-toepassing bevat de Hypertext Markup Language (HTML); een Cloudflare Worker bevat de headless browser. De bridge stuurt de HTML via Hypertext Transfer Protocol Secure (HTTPS) naar de Worker en ontvangt gerenderde Portable Document Format (PDF)-bytes. Er draait geen headless browser in uw PHP-proces en de bridge vereist geen lokale Chromium-binary op het pad dat de bridge beheert.
Het pakket maakt deel uit van het NextPDF-ecosysteem en is afhankelijk van nextpdf/core^3.0. Het is wire-protocolcode: het bouwt een JavaScript Object Notation (JSON)-aanvraag op, valideert de invoer en de bestemming, stuurt de aanvraag via een PHP Standards Recommendation 18 (PSR-18)-client en parseert het antwoord naar een getypeerd resultaatobject. De Worker-implementatie valt buiten dit pakket. Deze bridge communiceert met de Worker die u implementeert.
De trust boundary
Sectie met titel “De trust boundary”Het bepalende kenmerk van deze bridge is dat HTML een netwerkgrens overschrijdt en een browser-engine bereikt waarover u geen directe controle hebt. Vanwege die grens bestaan alle beveiligingsmaatregelen in het pakket.
- HTML wordt gevalideerd voordat die het PHP-proces verlaat (
CloudflareSecurityPolicy::validate()). - De Uniform Resource Locator (URL) van de bestemming wordt gevalideerd voordat de aanvraag wordt verzonden (
CloudflareSecurityPolicy::validateWorkerUrl()) en daarna op het moment van de aanvraag opnieuw gevalideerd om het time-of-check/time-of-use-venster te sluiten (assertPinsStillValid()). - De transportlaag kan de opgeloste Internet Protocol (IP)-set en de publieke sleutel van het servercertificaat pinnen (
Transport\PinnedCurlTransport).
Als u deze bridge voor productie evalueert, lees dan /integrations/cloudflare/security-and-operations/ vóór /integrations/cloudflare/quickstart/. Het beveiligingsmodel is geen achteraf toegevoegde laag; het verklaart waarom het pakket zo is vormgegeven.
Wat de bridge doet
Sectie met titel “Wat de bridge doet”| Mogelijkheid | Ondersteund door |
|---|---|
| HTML naar PDF renderen via een Cloudflare Worker | CloudflareHtmlRenderer::render() |
Beschikbaarheidsprobe (Hypertext Transfer Protocol (HTTP) HEAD) | CloudflareHtmlRenderer::isAvailable() |
| Leveranciersneutrale transportlaag | PSR-18 ClientInterface-injectie |
| Invoerverharding (grootte, base64-bom, meta-refresh) | CloudflareSecurityPolicy::validate() |
| Verdediging tegen Server-side request forgery (SSRF) / Domain Name System (DNS)-rebinding | CloudflareSecurityPolicy::validateWorkerUrl() + assertPinsStillValid() |
| Transport Layer Security (TLS) public-key-pinning en gepinde DNS op de cURL-laag | Transport\PinnedCurlTransport |
| Lokale Chrome-fallback wanneer de Worker onbereikbaar is | Contract\LocalRendererFactoryInterface |
| Parsing van binaire antwoorden en JSON (base64)-antwoorden | CloudflareResponseParser |
| Edge-telemetrie (rendertijd, edge-locatie, contenthoogte) | CloudflareRenderResult |
| Aangepaste lettertypen uit een R2-bucket | CloudflareRenderPayload (r2FontBucket, fontFiles) |
| Application Programming Interface (API)-beschermingslaag (sleutelauthenticatie, payloadgrootte, rate limiting) | ApiProtection |
| PDF-archivering naar R2 via de S3-compatibele API | R2ArchiveManager |
Elke rij verwijst naar een klasse in de namespace NextPDF\Cloudflare. Elke rij wordt getoetst aan het gedrag van die klasse en de bijbehorende test, niet aan een specificatiedocument.
Wat de bridge niet doet
Sectie met titel “Wat de bridge niet doet”- De bridge draait geen browser. De Worker doet dat.
- De bridge implementeert of configureert uw Worker niet. U bent verantwoordelijk voor dat artefact.
- Ze ondertekent geen PDF’s. Ondertekenen behoort tot
nextpdf/coreof de commerciële edities. Wanneer u ondertekening nodig hebt, rendert u eerst en ondertekent u daarna de geretourneerde bytes met de engine. NextPDF Pro biedt PAdES B-B-ondertekening. Long-term-validation-profielen zijn een Enterprise-mogelijkheid. - Ze doet geen uitspraak over capaciteit of limieten van het Cloudflare-platform. De enige grootte- en tijdslimieten die deze documentatie vermeldt, zijn de limieten die dit pakket via zijn eigen configuratie afdwingt (zie /integrations/cloudflare/configuration/).
De twee beveiligingsbeleidsregels
Sectie met titel “De twee beveiligingsbeleidsregels”De bridge bevat twee afzonderlijke, complementaire beleidsregels. Ze door elkaar halen is de meest voorkomende fout bij reviews. Hier worden ze afzonderlijk beschreven.
- HTML-beveiligingsbeleid (
HtmlSecurityPolicyInterface, standaardNextPDF\Html\DefaultHtmlSecurityPolicy, geleverd doornextpdf/core): contentfiltering op de parseerlaag, toegepast voordat content de Worker bereikt. Haal het op metgetHtmlSecurityPolicy(). - Cloudflare-beveiligingsbeleid (
CloudflareSecurityPolicy, statisch): controles op de transportlaag: invoergrootte, detectie van base64-decompressiebommen, blokkering van meta-refresh, afdwinging van HTTPS en SSRF / DNS-rebinding-verdediging voor de Worker-URL.
Het docblock van de renderer zelf vermeldt deze scheiding. Deze pagina herhaalt dit omdat reviewers op productieniveau beide namen op één scherm nodig hebben.
Edge-rendermodel
Sectie met titel “Edge-rendermodel”Eén enkele render()-aanroep volgt deze waarneembare reeks. De reeks is rechtstreeks afgeleid uit CloudflareHtmlRenderer::render().
- Controle op volledigheid van de configuratie (
workerUrlenapiTokenniet leeg). Als de controle mislukt, valt de bridge terug op een lokale renderer of wordtCloudflareNotAvailableExceptiongegooid. - HTML-validatie aan de hand van de geconfigureerde maximale grootte, het base64-URI-plafond en het meta-refresh-verbod.
- Validatie van de Worker-URL, die de host oplost en de gecontroleerde IP-set retourneert.
- Constructie van de payload (
CloudflareRenderPayload). - Een time-of-use-hercontrole bevestigt dat het DNS-antwoord van de host sinds stap 3 niet is gewijzigd.
- De HTTP-
POSTwordt verzonden via de gepinde cURL-transportlaag wanneer er een IP-set of Subject Public Key Info (SPKI)-pinset aanwezig is en een PSR-17ResponseFactoryis geleverd, anders via de geïnjecteerde PSR-18-client. - Het antwoord wordt geparseerd tot een
CloudflareRenderResult.
Iedere throwable behalve CloudflareRenderException activeert het fallback-pad. CloudflareRenderException (een HTTP-fout of een misvormd antwoord van de Worker) wordt ongewijzigd opnieuw gegooid. Het is een fout aan de Worker-kant, geen bereikbaarheidsfout, dus de bridge valt niet terug.
Zie ook
Sectie met titel “Zie ook”- /integrations/cloudflare/install/ — installeer het pakket en een PSR-18-client.
- /integrations/cloudflare/configuration/ — elk configuratieveld, met de standaardwaarde die aan de broncode is getoetst.
- /integrations/cloudflare/quickstart/ — uw eerste uitvoerbare render.
- /integrations/cloudflare/production-usage/ — fallback, telemetrie, R2-archivering, API-bescherming.
- /integrations/cloudflare/security-and-operations/ — operationele details voor de trust boundary.
- /integrations/cloudflare/troubleshooting/ — faalmodi gekoppeld aan excepties.
- /integrations/cloudflare/boot-and-discovery/ — hoe de bridge met een host-framework integreert.
- /integrations/cloudflare/integration/ — NextPDF aansturen via Cloudflare-services.