我正在寻找在 Deno 中创建 https 服务器的示例。我见过 Deno http 服务器的例子,但没有见过 https。
我尝试在谷歌搜索但没有找到结果
serveTLS
与 Deno 0.23.0 一起登陆:
示例用法:
import { serveTLS } from "https://deno.land/std/http/server.ts";
const body = new TextEncoder().encode("Hello HTTPS");
const options = {
hostname: "localhost",
port: 443,
certFile: "./path/to/localhost.crt",
keyFile: "./path/to/localhost.key",
};
// Top-level await supported
for await (const req of serveTLS(options)) {
req.respond({ body });
}
使用 Deno 1.9+,您可以使用本机服务器。它提供了使用 HTTPS 的能力。
它比旧的std/http
. 但是,从版本开始0.107.0
,也使用本机服务器std/http
。
例子:
const server = Deno.listenTls({
port: 443,
certFile: "./my-ca-certificate.pem",
keyFile: "./my-key.pem"
});
for await (const conn of server) {
handle(conn);
}
async function handle(conn: Deno.Conn) {
const httpConn = Deno.serveHttp(conn);
for await (const requestEvent of httpConn) {
try {
const response = new Response("Hello World!");
await requestEvent.respondWith(response);
}
catch (error) {
console.error(error);
}
}
}
首先,可以使用 DENO 标准库创建一个 HTTPS 服务器。但就我而言,我为我的应用程序使用了 OAK 库。更多关于橡树图书馆的信息可以在这里找到。步骤 1:准备好证书文件和密钥文件(假设它们是为您喜欢的任何域名生成的。它可能只是 localhost)。如果您不知道这意味着什么,请阅读这篇文章。. 第 2 步:是时候配置应用的收听选项了。您可以复制以下代码行并根据需要更改 certFile 和 keyFile 选项的路径。下面给出更多解释。
await app.listen({ port: port, secure: true, certFile: "<path-to-file>/<file-name>.pem", keyFile: "<path-to-file>/<file-name>-key.pem" });
如果您想知道上一行发生了什么:
现在 Dano 支持 TLS 绑定。以下是创建 https 服务器的方法:
import { serveTLS } from "https://deno.land/std/http/server.ts";
const body = new TextEncoder().encode("Hello HTTPS");
const options = {
hostname: "localhost",
port: 443,
certFile: "./path/to/localhost.crt",
keyFile: "./path/to/localhost.key",
};
for await (const req of serveTLS(options)) {
req.respond({ body });
}
服务TLS
论据
options: any
返回:服务器
和listenAndServeTLS
listenAndServeTLS(options, (req) => {
req.respond({ body });
});
听并服务TLS
论据
options: any
handler: (req: ServerRequest) => void
返回:任何
你检查过 DENO ABC 吗?它是创建 Web 应用程序的更好框架。在https://deno.land/x/abc/README.md阅读更多内容。
import { abc } from "https://deno.sh/abc/mod.ts";
const app = abc();
app
.get("/hello", c => {
return "Hello, Abc!";
})
.start("0.0.0.0:8080");