Add CORS Support to allow frontend requests
All checks were successful
Build and Push Docker Image / build (push) Successful in 7m28s
All checks were successful
Build and Push Docker Image / build (push) Successful in 7m28s
This commit is contained in:
5
go.mod
5
go.mod
@@ -22,6 +22,11 @@ require (
|
||||
go.opentelemetry.io/otel/sdk/metric v1.44.0
|
||||
)
|
||||
|
||||
require (
|
||||
connectrpc.com/cors v0.1.0 // indirect
|
||||
github.com/rs/cors v1.11.1 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 // indirect
|
||||
buf.build/go/protovalidate v1.2.0 // indirect
|
||||
|
||||
4
go.sum
4
go.sum
@@ -10,6 +10,8 @@ cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
|
||||
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
|
||||
connectrpc.com/connect v1.20.0 h1:6TNDAB+WeNd2uolWNlYczB5E0KNNaVMNUEx8JEUsPmQ=
|
||||
connectrpc.com/connect v1.20.0/go.mod h1:A2ygJrukXwWy32vkCAAHNVguZrqZ+jeZ9rGRnGR4dN4=
|
||||
connectrpc.com/cors v0.1.0 h1:f3gTXJyDZPrDIZCQ567jxfD9PAIpopHiRDnJRt3QuOQ=
|
||||
connectrpc.com/cors v0.1.0/go.mod h1:v8SJZCPfHtGH1zsm+Ttajpozd4cYIUryl4dFB6QEpfg=
|
||||
connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc=
|
||||
connectrpc.com/grpcreflect v1.3.0/go.mod h1:nfloOtCS8VUQOQ1+GTdFzVg2CJo4ZGaat8JIovCtDYs=
|
||||
connectrpc.com/validate v0.6.0 h1:DcrgDKt2ZScrUs/d/mh9itD2yeEa0UbBBa+i0mwzx+4=
|
||||
@@ -46,6 +48,8 @@ github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ=
|
||||
github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA=
|
||||
github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
||||
github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs=
|
||||
github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
||||
@@ -10,6 +10,7 @@ type Config struct {
|
||||
LISTEN_ON string `json:"listen_on"`
|
||||
TRUSTED_PROXIES []string `json:"trusted_proxies"`
|
||||
OTLP_ENDPOINT string `json:"otlp_endpoint"`
|
||||
ALLOWED_ORIGINS []string `json:"allowed_origins"`
|
||||
}
|
||||
|
||||
func Read() *Config {
|
||||
|
||||
13
main.go
13
main.go
@@ -7,6 +7,7 @@ import (
|
||||
"os"
|
||||
|
||||
"connectrpc.com/connect"
|
||||
connectcors "connectrpc.com/cors"
|
||||
"connectrpc.com/grpcreflect"
|
||||
"connectrpc.com/validate"
|
||||
"git.kocoder.xyz/vt/shortener/internal/config"
|
||||
@@ -15,6 +16,7 @@ import (
|
||||
"git.kocoder.xyz/vt/shortener/internal/service"
|
||||
"git.kocoder.xyz/vt/shortener/internal/telemetry"
|
||||
_ "github.com/lib/pq"
|
||||
"github.com/rs/cors"
|
||||
"github.com/uptrace/opentelemetry-go-extra/otelsql"
|
||||
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
@@ -66,8 +68,17 @@ func main() {
|
||||
|
||||
mux.Handle("/", srv)
|
||||
|
||||
c := cors.New(cors.Options{
|
||||
AllowedOrigins: conf.ALLOWED_ORIGINS,
|
||||
AllowedMethods: connectcors.AllowedMethods(),
|
||||
AllowedHeaders: connectcors.AllowedHeaders(),
|
||||
ExposedHeaders: connectcors.ExposedHeaders(),
|
||||
MaxAge: 7200,
|
||||
})
|
||||
corsMux := c.Handler(mux)
|
||||
|
||||
// Wrap the server with OpenTelemetry HTTP handler for tracing & metrics
|
||||
instrumentedHandler := otelhttp.NewHandler(mux, "shortener-server2")
|
||||
instrumentedHandler := otelhttp.NewHandler(corsMux, "shortener-server2")
|
||||
|
||||
p := new(http.Protocols)
|
||||
p.SetHTTP1(true)
|
||||
|
||||
Reference in New Issue
Block a user