http - 使用 Deno 在本地网络上提供文件服务

标签 http localhost deno

我最近决定尝试一下 Deno一点。

现在我正在尝试在本地网络上设置一个基本文件服务器,但它只会向我的计算机提供文件,而不是网络的其余部分(我什至无法从在我的计算机之外)。我一生都无法弄清楚为什么它只能在本地工作。

我已经在下面添加了我现在使用的代码,以防万一,但我很确定问题出在其他地方,因为我对 this file_server example 也有同样的问题。当我使用 oak 创建文件服务器时

import { serve } from 'https://deno.land/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f5c5b4b6f591f011b1d011f" rel="noreferrer noopener nofollow">[email protected]</a>/http/server.ts';
const server = serve({ port: 3000 });

const decoder = new TextDecoder('utf-8');

for await (const req of server) {
    const filePath = 'public' + req.url;

    try {
        const data = await Deno.readFile(filePath);
        req.respond({ body: decoder.decode(data) });
    } catch (error) {
        if (error.name === Deno.errors.NotFound.name) {
            console.log('File "' + filePath + '" not found');
            req.respond({ status: 404, body: 'File not found' });
        } else {
            req.respond({ status: 500, body: 'Rest in pieces' });
            throw error;
        }
    }
}

我用来运行该文件的命令是:

deno --allow-all server.ts

当我在 Node.js 中创建一个简单的文件服务器时,一切工作正常。它可以向我的计算机和网络上的任何其他设备提供文件。

我认为问题在于我对 Deno 及其安全概念的理解,但我不知道。我将非常感谢任何帮助,并可以根据需要提供更多详细信息。

最佳答案

您需要将主机名绑定(bind)到0.0.0.0,如下所示:

const server =serve({ 主机名: '0.0.0.0', 端口: 3000 });

默认情况下,您的网络服务器仅响应 localhost127.0.0.1

绑定(bind)到 0.0.0.0 告诉 Deno 绑定(bind)到您计算机上的所有 IP 地址/接口(interface)。这使得网络上的任何计算机都可以访问它。

您的网络 IP 地址(采用 192.168.x.y. 格式)也会绑定(bind)到 Deno 网络服务器,这允许网络中的另一台计算机使用您的本地 IP 地址访问网络服务器。

关于http - 使用 Deno 在本地网络上提供文件服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566455/

相关文章:

android - 收到响应后如何关闭http客户端连接?

ubuntu - 在 Ubuntu 中更改主机文件

html - threepenny-gui - 打开文件

deno - 返回 HTML 作为 den 中的响应

java - 通过 servlet 传送解压后的文件,无需先在服务器上解压

c# - 通过 Fiddler 向 asp.net mvc 操作发送 POST 请求

apache - iCloud Drive 上的 macOS Sierra Sites 文件夹如何转移到本地主机?

javascript - HTTP 无法识别正文

使用 Deno 或 Rust 的 MongoDB Schema

android, auth, keep HTTP connection, 在少数 Activity 中使用连接