← Cloudflare Workers / workers / runtime-apis / nodejs
https
Příznaky kompatibility
Metody na straně klienta
Chcete-li používat metody HTTPS na straně klienta (https.get, https.request, atd.), musíte povolit enable_nodejs_http_modules příznak kompatibility navíc k nodejs_compat příznak.
Tento příznak se automaticky povolí pro Workery používající compatibility date z 2025-08-15 nebo novější, když nodejs_compat je povoleno. U Workerů s dřívějším datem kompatibility jej můžete povolit ručně přidáním příznaku do wrangler.toml:
compatibility_flags = ["nodejs_compat", "enable_nodejs_http_modules"]Metody na straně serveru
Chcete-li používat metody HTTPS na straně serveru (https.createServer, https.Server, https.ServerResponse), musíte povolit enable_nodejs_http_server_modules příznak kompatibility navíc k nodejs_compat příznak.
Tento příznak se automaticky povolí pro Workery používající compatibility date z 2025-09-01 nebo novější, když nodejs_compat je povoleno. U Workerů s dřívějším datem kompatibility jej můžete povolit ručně přidáním příznaku do wrangler.toml:
compatibility_flags = ["nodejs_compat", "enable_nodejs_http_server_modules"]Chcete-li použít metody na straně klienta i na straně serveru, povolte oba příznaky:
compatibility_flags = ["nodejs_compat", "enable_nodejs_http_modules", "enable_nodejs_http_server_modules"]získat
Implementace Node.js `https.get' ↗ metoda.
get metoda provede GET požadavek na zadanou URL adresu a zavolá callback s odpovědí. Jde o pomocnou metodu, která zjednodušuje vytváření HTTPS GET požadavků bez nutnosti ručně konfigurovat možnosti požadavku.
Protože get je obal kolem fetch(...), lze jej použít pouze uvnitř exportovaného handleru fetch nebo podobného. Mimo takový handler se pokusy o použití get vyvolá chybu.
import { get } from "node:https";
export default {
async fetch() {
const { promise, resolve, reject } = Promise.withResolvers();
get("https://example.com", (res) => {
let data = "";
res.setEncoding("utf8");
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
resolve(new Response(data));
});
res.on("error", reject);
}).on("error", reject);
return promise;
},
};Implementace get ve Workers je wrapperem kolem globálního
fetch API ↗
a proto podléhá stejným limity ↗.
Jak ukazuje příklad výše, je nutné zajistit, aby na požadavky bylo
správně čekáno (await) v fetch handler pomocí promise, jinak může být fetch předčasně zrušen,
když se handler vrátí.
požadavek
Implementace Node.js `https.request' ↗ metoda.
request metoda vytváří HTTPS požadavek s přizpůsobitelnými možnostmi, jako je metoda, hlavičky a tělo. Poskytuje plnou kontrolu nad konfigurací požadavku a vrací Node.js stream.Writable ↗ pro odesílání dat požadavku.
Protože get je obal kolem fetch(...), lze jej použít pouze uvnitř exportovaného handleru fetch nebo podobného. Mimo takový handler se pokusy o použití get vyvolá chybu.
Metoda požadavku přijímá všechny možnosti z http.request s určitými rozdíly ve výchozích hodnotách:
protocol: výchozíhttps:port: výchozí443agent: výchozíhttps.globalAgent
import { request } from "node:https";
import { strictEqual, ok } from "node:assert";
export default {
async fetch() {
const { promise, resolve, reject } = Promise.withResolvers();
const req = request(
"https://developers.cloudflare.com/robots.txt",
{
method: "GET",
},
(res) => {
strictEqual(res.statusCode, 200);
let data = "";
res.setEncoding("utf8");
res.on("data", (chunk) => {
data += chunk;
});
res.once("error", reject);
res.on("end", () => {
ok(data.includes("User-agent"));
resolve(new Response(data));
});
},
);
req.end();
return promise;
},
};Následující další volby nejsou podporovány: ca, cert, ciphers, clientCertEngine (zastaralé), crl, dhparam, ecdhCurve, honorCipherOrder, key, passphrase, pfx, rejectUnauthorized, secureOptions, secureProtocol, servername, sessionIdContext, highWaterMark.
createServer
Implementace Node.js https.createServer ↗ metoda.
createServer metoda vytváří instanci HTTPS serveru, která umí zpracovávat příchozí zabezpečené požadavky. Jde o pomocnou funkci, která vytvoří nový Server instance a volitelně nastaví callback pro naslouchání požadavkům.
import { createServer } from "node:https";
import { httpServerHandler } from "cloudflare:node";
const server = createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello from Node.js HTTPS server!");
});
server.listen(8080);
export default httpServerHandler({ port: 8080 }); httpServerHandler funkce propojuje servery Node.js HTTPS s modelem požadavků Cloudflare Workers. Když požadavek dorazí k vašemu Workeru, handler jej automaticky nasměruje na váš server Node.js běžící na zadaném portu. Tento most vám umožňuje používat běžné vzory serverů Node.js a zároveň využívat prostředí runtime Workers, včetně automatického škálování, nasazení na okraji sítě a integrace s dalšími službami Cloudflare.
Agent
Implementace Node.js https.Agent ↗ třídu.
Agent ↗ spravuje opětovné využití HTTPS připojení tím, že udržuje fronty požadavků podle hostitele a portu. V prostředí Workers však toto nízkoúrovňové řízení síťového připojení, portů a podobně není relevantní, protože jej za vás zajišťuje infrastruktura Cloudflare. Implementace Agent ve Workers je stub implementace, která nepodporuje pooling připojení ani keep-alive.
Server
Implementace Node.js https.Server ↗ třídu.
V Node.js https.Server třída reprezentuje HTTPS server a poskytuje metody pro zpracování zabezpečených příchozích požadavků. Ve Workers zajišťuje zpracování zabezpečených požadavků infrastruktura Cloudflare, takže mezi použitím https.Server nebo http.Server. Workers runtime poskytuje vlastní implementaci kvůli úplnosti, ale většina workerů by pravděpodobně měla jednoduše používat http.Server.
import { Server } from "node:https";
import { httpServerHandler } from "cloudflare:node";
const server = new Server((req, res) => {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: "Hello from HTTPS Server!" }));
});
server.listen(8080);
export default httpServerHandler({ port: 8080 });Mezi implementací ve Workers a Node.js existují následující rozdíly:
- Metody správy připojení, jako například
closeAllConnections()acloseIdleConnections()nejsou implementovány kvůli povaze prostředí Workers. - Pouze
listen()varianty s číslem portu nebo bez parametrů jsou podporovány:listen(),listen(0, callback),listen(callback), atd. - Následující možnosti serveru nejsou podporovány:
maxHeaderSize,insecureHTTPParser,keepAliveTimeout,connectionsCheckingInterval - Možnosti specifické pro TLS/SSL, jako například
ca,cert,key,pfx,rejectUnauthorized,secureProtocolnejsou v prostředí Workers podporovány. Pokud potřebujete používat mTLS, použijte mTLS binding.
Další rozdíly mezi Node.js a implementací Workers pro node:https
Protože implementace Workers node:https je obal kolem globálního fetch API existují určité rozdíly v chování oproti Node.js:
Connectionhlavičky se nepoužívají. Workers spravují připojení automaticky.Content-Lengthhlavičky se budou zpracovávat stejně jako vfetchAPI. Pokud je zadáno tělo požadavku, hlavička se nastaví automaticky a ručně nastavené hodnoty budou ignorovány.Expect: 100-continuehlavičky nejsou podporované.- Koncové hlavičky nejsou podporovány.
-
'continue'událost není podporována. -
'information'událost není podporována. -
'socket'událost není podporována. -
'upgrade'událost není podporována. - Získání přímého přístupu k podkladové
socketnení podporováno. - Konfigurace specifických možností TLS, jako je
ca,cert,key,rejectUnauthorized, atd. není podporováno.