From aa8c9f82a605a7e5ff4833e1c6cceabb99727a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=87=E8=B6=A3=E4=BF=9D=E7=BD=97?= Date: Fri, 10 Jun 2022 22:55:02 +0800 Subject: [PATCH] Fix: Get Real IP Bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 尝试解决获取 IP 的问题 --- src/server/api/ip.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/server/api/ip.ts b/src/server/api/ip.ts index 70a5270..cab2517 100644 --- a/src/server/api/ip.ts +++ b/src/server/api/ip.ts @@ -1,19 +1,25 @@ +// Tool import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks"; import { RedisService } from "@midwayjs/redis"; - import fetch from "isomorphic-unfetch"; + +// Interface +import { Context } from "@midwayjs/koa"; + + +// API export default Api( Get(), Query<{ ip?: string }>(), async () => { - const ctx = useContext(); + const ctx = useContext(); const client = await useInject(RedisService); // 增加使用数量 await client.incr("api-next:stat:ip"); - const ip = ctx.query.ip || ctx.ip.replace(/::\S+:/, ""); + const ip = ctx.headers["x-forwarded-for"] || ctx.request.ip.replace(/::\S+:/, "") || "127.0.0.1"; const response = await fetch(`http://ip-api.com/json/${ip}?lang=zh-CN`, { headers: {