github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/internal/apiserver/server_cors.go (about)

     1  // Copyright © 2021 Kaleido, Inc.
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  //
     5  // Licensed under the Apache License, Version 2.0 (the "License");
     6  // you may not use this file except in compliance with the License.
     7  // You may obtain a copy of the License at
     8  //
     9  //     http://www.apache.org/licenses/LICENSE-2.0
    10  //
    11  // Unless required by applicable law or agreed to in writing, software
    12  // distributed under the License is distributed on an "AS IS" BASIS,
    13  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  // See the License for the specific language governing permissions and
    15  // limitations under the License.
    16  
    17  package apiserver
    18  
    19  import (
    20  	"context"
    21  	"net/http"
    22  
    23  	"github.com/kaleido-io/firefly/internal/config"
    24  	"github.com/kaleido-io/firefly/internal/log"
    25  	"github.com/rs/cors"
    26  )
    27  
    28  func wrapCorsIfEnabled(ctx context.Context, chain http.Handler) http.Handler {
    29  	if !config.GetBool(config.CorsEnabled) {
    30  		return chain
    31  	}
    32  	corsOptions := cors.Options{
    33  		AllowedOrigins:   config.GetStringSlice(config.CorsAllowedOrigins),
    34  		AllowedMethods:   config.GetStringSlice(config.CorsAllowedMethods),
    35  		AllowedHeaders:   config.GetStringSlice(config.CorsAllowedHeaders),
    36  		AllowCredentials: config.GetBool(config.CorsAllowCredentials),
    37  		MaxAge:           config.GetInt(config.CorsMaxAge),
    38  		Debug:            config.GetBool(config.CorsDebug),
    39  	}
    40  	log.L(ctx).Debugf("CORS origins=%v methods=%v headers=%v creds=%t maxAge=%d",
    41  		corsOptions.AllowedOrigins,
    42  		corsOptions.AllowedMethods,
    43  		corsOptions.AllowedHeaders,
    44  		corsOptions.AllowCredentials,
    45  		corsOptions.MaxAge,
    46  	)
    47  	c := cors.New(corsOptions)
    48  	return c.Handler(chain)
    49  }