mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 19:06:33 +02:00
config: add support for set_response_headers in a policy (#2171)
* config: add support for set_response_headers in a policy * docs: add note about precedence
This commit is contained in:
parent
129df47f9c
commit
69576cffe4
6 changed files with 514 additions and 471 deletions
|
@ -276,6 +276,7 @@ func (b *Builder) buildPolicyRoutes(options *config.Options, domain string) ([]*
|
|||
Metadata: &envoy_config_core_v3.Metadata{},
|
||||
RequestHeadersToAdd: toEnvoyHeaders(policy.SetRequestHeaders),
|
||||
RequestHeadersToRemove: getRequestHeadersToRemove(options, &policy),
|
||||
ResponseHeadersToAdd: toEnvoyHeaders(policy.SetResponseHeaders),
|
||||
}
|
||||
if policy.Redirect != nil {
|
||||
action, err := b.buildPolicyRouteRedirectAction(policy.Redirect)
|
||||
|
|
|
@ -151,6 +151,9 @@ type Policy struct {
|
|||
|
||||
// RewriteResponseHeaders rewrites response headers. This can be used to change the Location header.
|
||||
RewriteResponseHeaders []RewriteHeader `mapstructure:"rewrite_response_headers" yaml:"rewrite_response_headers,omitempty" json:"rewrite_response_headers,omitempty"` //nolint
|
||||
|
||||
// SetResponseHeaders sets response headers.
|
||||
SetResponseHeaders map[string]string `mapstructure:"set_response_headers" yaml:"set_response_headers,omitempty"`
|
||||
}
|
||||
|
||||
// RewriteHeader is a policy configuration option to rewrite an HTTP header.
|
||||
|
@ -219,6 +222,7 @@ func NewPolicyFromProto(pb *configpb.Route) (*Policy, error) {
|
|||
PreserveHostHeader: pb.GetPreserveHostHeader(),
|
||||
PassIdentityHeaders: pb.GetPassIdentityHeaders(),
|
||||
KubernetesServiceAccountToken: pb.GetKubernetesServiceAccountToken(),
|
||||
SetResponseHeaders: pb.GetSetResponseHeaders(),
|
||||
}
|
||||
|
||||
if pb.Redirect.IsSet() {
|
||||
|
@ -321,6 +325,7 @@ func (p *Policy) ToProto() (*configpb.Route, error) {
|
|||
PassIdentityHeaders: p.PassIdentityHeaders,
|
||||
KubernetesServiceAccountToken: p.KubernetesServiceAccountToken,
|
||||
Policies: sps,
|
||||
SetResponseHeaders: p.SetResponseHeaders,
|
||||
}
|
||||
if p.Redirect != nil {
|
||||
pb.Redirect = &configpb.RouteRedirect{
|
||||
|
|
|
@ -1372,6 +1372,14 @@ Remove Request Headers allows you to remove given request headers. This can be u
|
|||
```
|
||||
|
||||
|
||||
### Set Response Headers
|
||||
- Config File Key: `set_response_headers`
|
||||
- Type: map of `strings` key value pairs
|
||||
- Optional
|
||||
|
||||
Set Response Headers allows you to set static values for the given response headers. These headers will take precedence over the global `set_response_headers`.
|
||||
|
||||
|
||||
### Rewrite Response Headers
|
||||
- Config File Key: `rewrite_response_headers`
|
||||
- Type: `object`
|
||||
|
|
|
@ -1507,6 +1507,14 @@ settings:
|
|||
- X-Email
|
||||
- X-Username
|
||||
```
|
||||
- name: "Set Response Headers"
|
||||
keys: ["set_response_headers"]
|
||||
attributes: |
|
||||
- Config File Key: `set_response_headers`
|
||||
- Type: map of `strings` key value pairs
|
||||
- Optional
|
||||
doc: |
|
||||
Set Response Headers allows you to set static values for the given response headers. These headers will take precedence over the global `set_response_headers`.
|
||||
- name: "Rewrite Response Headers"
|
||||
keys: ["rewrite_response_headers"]
|
||||
attributes: |
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -82,6 +82,7 @@ message Route {
|
|||
|
||||
map<string, string> set_request_headers = 22;
|
||||
repeated string remove_request_headers = 23;
|
||||
map<string, string> set_response_headers = 41;
|
||||
repeated RouteRewriteHeader rewrite_response_headers = 40;
|
||||
|
||||
bool preserve_host_header = 24;
|
||||
|
|
Loading…
Add table
Reference in a new issue