getsentry / sentry-javascript

Official Sentry SDKs for JavaScript
https://sentry.io
MIT License
7.98k stars 1.57k forks source link

When using Next.js SDK with `Sentry.requestDataIntegration({ include: { ip: true } })` on the server, IP is always `ip:::ffff:127.0.0.1` or some variant of localhost #13245

Open Pikachews opened 3 months ago

Pikachews commented 3 months ago

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/nextjs

SDK Version

8.22.0

Framework Version

14.2.4

Link to Sentry event

https://test-application-g0.sentry.io/issues/5682136612/?project=4507729342496768

Reproduction Example/SDK Setup

sentry.server.config.ts/sentry.edge.config.ts

Sentry.init({
  dsn: dsn,
  ...,
  integrations: [
    Sentry.requestDataIntegration({
      include: { ip: true },
    }),
  ],
});

pages/api/test-error.ts

import type { NextApiRequest, NextApiResponse } from "next";

export default function handler(req: NextApiRequest, res: NextApiResponse) {
  throw new Error("text error");
}

Steps to Reproduce

  1. Visit /api/test-error
  2. View the created issue in Sentry

Expected Result

The IP address field should be the one contained in X-Forwarded-For or X-Real-Ip.

Actual Result

The IP address used is always ip:::ffff:127.0.0.1 (or some variant of localhost).

andreiborza commented 3 months ago

Hello, thanks for filing this. We'll look into this.

mydea commented 3 months ago

We looked into this some more, and you are right, the behavior we have today is inconsistent here. I opened an issue to track this, we'll try to fix this soon: https://github.com/getsentry/sentry-javascript/issues/13260