envoyproxy / envoyproxy/envoy

direct_response precedence over CORS pre-flight response

Open
#8,262 7 comments 8 reactions 1 assignee Claimed by @dschaller View on GitHub
bug help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 22h
Merged PRs (30d)
430

Description

When using `direct_response`, it _seems_ to take effect with higher precedence than the `envoy.cors` filter, even if `envoy.cors` is first in the `http_filters` list.

My http config is essentially:
```
http_filters:
- name: envoy.cors
- name: envoy.filters.http.jwt_authn
config: { ... }
- name: envoy.router
route_config:
virtual_hosts:
- cors: { ... }
...
routes:
- match: { path: "/ping" }
direct_response: { status: 200 }
```

If I change `direct_response` to a `route` to a dummy cluster, a pre-flight OPTIONS request returns the right cors response, but with `direct_response` the response is the vanilla 200 even for the pre-flight request. It's possible to use a header method match to manually construct a different response for OPTIONS vs other requests to that route, but ideally there would be a way to configure a route action to be a direct response that acts on the request after cors (and other filters) have done their work.

The use case here is e.g. a `/ping` endpoint that goes through the filter stack and sends a direct response after validating the JWT etc.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.