# \[vote\] new HTTP header middleware configuration

**URL:** <https://community.traefik.io/t/vote-new-http-header-middleware-configuration/17030>\
**Category:** Traefik v3 (latest)\
**Tags:** middleware\
**Created:** [January 5, 2023, 3:14pm UTC](https://community.traefik.io/t/vote-new-http-header-middleware-configuration/17030 "2023-01-05T15:14:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ldez](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/ldez/32/5_2.png) [@ldez](https://community.traefik.io/u/ldez)\
**Post date:** [January 5, 2023, 3:14pm UTC](https://community.traefik.io/t/vote-new-http-header-middleware-configuration/17030/1 "2023-01-05T15:14:52Z")

</div>

Iterating on a [proposal](https://github.com/traefik/traefik/issues/9471), we would like to propose a couple of changes for the current [Headers middleware](https://doc.traefik.io/traefik/middlewares/http/headers/) in Traefik.

First, we think this middleware has too many options, mixing both simple header manipulation and more "security-oriented" header fields in the same middleware can be confusing.  
Also, having both request and response header fields handled by the same middleware does not necessarily make a lot of sense.

We propose to split the current `headers` middleware into 3 distinct middleware:

- `requestHeader`, for manipulating request header fields only
- `responseHeader`, for manipulating response header fields only
- `secureHeader`, for handling all security-related header fields only

With this new split, we are currently considering the following configuration options for the new `requestHeader` and `responseHeader` middlewares:

## Option n°1

### Simple

For Kubernetes:

```yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: middleware-name
spec:
  requestHeader:
    set:
      Header-Key-1: value1

```

For Docker:

```yaml
labels:
  - "traefik.http.middlewares.middleware-name.requestHeaders.set.Header-Key-1=value1"

```

### Advanced

For Kubernetes:

```yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: middleware-name
spec:
  requestHeader:
    set:
      Header-Key-1: value1
    append:
      Header-Key-2: value2
    delete:
      - Header-Key-3
      - Header-Key-4

```

For Docker:

```yaml
labels:
  - "traefik.http.middlewares.middleware-name.requestHeaders.set.Header-Key-1=value1"
  - "traefik.http.middlewares.middleware-name.requestHeaders.append.Header-Key-2=value2"
  - "traefik.http.middlewares.middleware-name.requestHeaders.delete=Header-Key-3,Header-Key-4"

```

## Option n°2

### Simple

For Kubernetes:

```yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: middleware-name
spec:
  requestHeader:
    Header-Key-1:
      value: value1

```

For Docker:

```yaml
labels:
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-1.value=value1"

```

### Advanced

For Kubernetes:

```yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: middleware-name
spec:
  requestHeader:
    Header-Key-1:
      value: value1
      strategy: set # Default value, can be omitted.
    Header-Key-2:
      value: value2
      strategy: append
    Header-Key-3:
      strategy: delete
    Header-Key-4:
      strategy: delete

```

For Docker:

```yaml
labels:
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-1.value=value1"
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-2.value=value2"
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-2.strategy=append"
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-3.strategy=delete"
  - "traefik.http.middlewares.middleware-name.requestHeader.Header-Key-4.strategy=delete"

```

_Poll ([view on site](https://community.traefik.io/t/vote-new-http-header-middleware-configuration/17030/1))_

---

<div class="post-metadata">

**Author:** ![ldez](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/ldez/32/5_2.png) [@ldez](https://community.traefik.io/u/ldez)\
**Post date:** [January 5, 2023, 3:47pm UTC](https://community.traefik.io/t/vote-new-http-header-middleware-configuration/17030/4 "2023-01-05T15:47:04Z")

</div>


