INTEGRITY Dokumentace

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:

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:

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: