我正在使用 SvelteKit 和 TypeScript 开发一个 Web 应用程序。在登录过程中,我的目标是在标头中发送登录用户的公共IP信息。
event.locals.clientIP = event.getClientAddress();
event.getClientAddress()
只需返回本地ip即可。
如何正确将登录用户的公网IP添加到X-Forwarded-For标头中?
由于潜在的安全漏洞,我不想使用外部 API 来获取公共 IP。有其他方法获取IP吗?
可以在服务器端获取客户端IP:
+page.server.ts:
/** @type {import('@sveltejs/kit').RequestHandler} */
export async function load(event) {
return { ip: event.getClientAddress() };
}
并在客户端访问它:
+page.svelte:
<script lang="ts">
import type { PageData } from './$types';
export let data: PageData;
</script>
{#if data?.ip}
<p>ip to test: {data.ip}</p>
{/if}
请注意,在本地主机上运行时,您将获得本地 IP,但部署到生产环境后,将返回用户 IP。