Remove headers

Verified Code examples on this page have been automatically tested and verified.

Remove headers from requests before they reach the upstream. Use this when a client sends headers that the backend service should not receive, such as internal routing hints, authentication tokens, or debugging headers added by a proxy.

Before you begin

  1. Set up an agentgateway proxy.
  2. Install the httpbin sample app.

Remove request headers

In this example, you remove the x-debug-trace request header before the request is forwarded to the upstream.

  1. Send a request to the httpbin app and include the x-debug-trace request header. Verify that httpbin echoes it back in the response body.

    curl -s http://$INGRESS_GW_ADDRESS:80/get \
     -H "host: www.example.com:80" \
     -H "x-debug-trace: true"
    curl -s localhost:8080/get \
    -H "host: www.example.com" \
    -H "x-debug-trace: true"

    Example output:

    {
      "args": {},
      "headers": {
        "Accept": [
          "*/*"
        ],
        "Host": [
          "www.example.com"
        ],
        "User-Agent": [
          "curl/8.7.1"
        ],
        "X-Debug-Trace": [
          "true"
        ]
      },
      "origin": "10.244.0.6:12345",
      "url": "http://www.example.com/get"
    }
    

    The x-debug-trace header is present in the echoed headers.

  2. Create an AgentgatewayPolicy resource with your transformation rules.

    kubectl apply -f- <<EOF
    apiVersion: agentgateway.dev/v1alpha1
    kind: AgentgatewayPolicy
    metadata:
      name: transformation
      namespace: httpbin
    spec:
      targetRefs:
      - group: gateway.networking.k8s.io
        kind: HTTPRoute
        name: httpbin
      traffic:
        transformation:
          request:
            remove:
            - x-debug-trace
    EOF
  3. Send another request with the x-debug-trace request header. Verify that you get back a 200 HTTP response code and that the x-debug-trace header is no longer present in the headers echoed back by httpbin.

    curl -vi http://$INGRESS_GW_ADDRESS:80/get \
     -H "host: www.example.com:80" \
     -H "x-debug-trace: true"
    curl -vi localhost:8080/get \
    -H "host: www.example.com" \
    -H "x-debug-trace: true"

    Example output:

    < HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    ...
    
    {
      "args": {},
      "headers": {
        "Accept": [
          "*/*"
        ],
        "Host": [
          "www.example.com"
        ],
        "User-Agent": [
          "curl/8.7.1"
        ]
      },
      "origin": "10.244.0.6:12345",
      "url": "http://www.example.com/get"
    }
    

    The x-debug-trace header is absent from the echoed headers, confirming it was stripped before the request reached the upstream.

Cleanup

You can remove the resources that you created in this guide.
kubectl delete AgentgatewayPolicy transformation -n httpbin
Agentgateway assistant

Ask me anything about agentgateway configuration, features, or usage.

Note: AI-generated content might contain errors; please verify and test all returned information.

Tip: one topic per conversation gives the best results. Use the + button in the chat header to start a new conversation.

Switching topics? Starting a new conversation improves accuracy.
↑↓ navigate select esc dismiss

What could be improved?

Your feedback helps us improve assistant answers and identify docs gaps we should fix.

Need more help? Join us on Discord: https://discord.gg/y9efgEmppm

Want to use your own agent? Add the Solo MCP server to query our docs directly. Get started here: https://search.solo.io/.