有没有一种简单的方法可以使用 Deno.serveHttp 获取 IP 客户端?

Posted

技术标签:

【中文标题】有没有一种简单的方法可以使用 Deno.serveHttp 获取 IP 客户端?【英文标题】:Is there an easy way to get the IP client using Deno.serveHttp? 【发布时间】:2022-01-07 07:16:32 【问题描述】:

我在官方存储库中发现了这个问题。但不是直接的方式更多的是来自 Oakserver 的实现。 https://github.com/denoland/deno/discussions/9314

【问题讨论】:

【参考方案1】:

您可以将连接地址转换为 Deno.NetAddr 并在那里访问 hostname(如果需要,还可以访问 port):

const server = Deno.listen( port: 8080 );

for await (const conn of server) 
  (async () => 
    const httpConn = Deno.serveHttp(conn);
    const  hostname  = conn.remoteAddr as Deno.NetAddr;
    for await (const requestEvent of httpConn) 
      requestEvent.respondWith(new Response(hostname));
    
  )();

【讨论】:

hostname 始终是 127.0.0.1new Response(hostname) 不会提供更多有用的数据。我在我的笔记本电脑和服务器生产上试过这个。 如果您使用ipconfig 或其他东西并在本地网络上了解您计算机的IP 地址,那么您可以从其他设备(例如您的手机)加载页面;例如使用 Deno 运行代码,然后(使用您自己计算机的 IP)从您的手机访问 192.168.86.222:8000(或任何您的实际 IP);您应该会看到显示您手机的 IP 地址 你也可以在 Deno Deploy 上试试这个;以下示例通过 Deno 标准库使用 Deno.serveHttp:dash.deno.com/playground/example-client-ip(另请参阅 deno.com/deploy/docs/examples#client-ip) 这是我的 nginx 配置的错。我需要传递这个标题proxy_set_header X-Real-IP $remote_addr;

以上是关于有没有一种简单的方法可以使用 Deno.serveHttp 获取 IP 客户端?的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种简单的方法可以在 PostgreSQL 查询中使用变量? [复制]

有没有一种简单的方法可以将 Ajax 更改为 WebSocket?

有没有一种简单的方法可以使用 Deno.serveHttp 获取 IP 客户端?

有没有一种简单的方法可以使用 OleDbConnection 删除/忽略 Excel 文件中列名上方的行?

有没有一种简单的方法可以使用 TypeScript 更改嵌套 json 数据中的一个值?

有没有一种简单的方法可以将 C# 类转换为 PHP?