Atomic Request headers
Your function receives the headers the caller sent. That includes your own: webhook signatures like Stripe-Signature or X-Hub-Signature-256, an Idempotency-Key, a traceparent, whatever your application defines. So you can verify a webhook is authentic before acting on it.
Six headers are removed on the way in, and it is worth knowing why:
| Header | Why it does not reach your function |
|---|---|
Cookie / Set-Cookie | Every slice shares the ondrift.eu apex, so a cookie scoped to it would be sent to every other slice too. Carry sessions in the Authorization header instead. |
X-Forwarded-For / -Host / -Proto, X-Real-IP | Set by the platform, so the client address your function sees is the real one and cannot be forged by the caller. |
Four headers are written by the platform on every request, overwriting anything the caller sent:
| Header | Value |
|---|---|
X-Username | The slice's owner. |
X-Slice | The slice name this request was routed to. |
X-User-RPM | The slice's requests-per-minute ceiling. |
X-User-Runtime | The per-invocation runtime budget in seconds. The runner reads it to size the kill timer. |
X-Request-Id is a correlation id, not an identity.
The edge generates one when the header is absent and preserves it when the caller sends it, so any client can choose its own value. Log it to correlate a request across layers; never authorise on it.