From 8c26c8c3281a4bccba99ee35b2d524ee95917ba3 Mon Sep 17 00:00:00 2001 From: Tony Chen Date: Sun, 13 Jun 2021 15:21:29 +0800 Subject: [PATCH] examples: add cors example (#1048) * add cors example --- examples/go.mod | 1 + examples/go.sum | 4 ++++ examples/http/cors/main.go | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 examples/http/cors/main.go diff --git a/examples/go.mod b/examples/go.mod index 508276793..82365e042 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -22,6 +22,7 @@ require ( github.com/go-redis/redis/v8 v8.9.0 github.com/go-sql-driver/mysql v1.6.0 github.com/google/wire v0.5.0 + github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.4.2 github.com/hashicorp/consul/api v1.8.1 diff --git a/examples/go.sum b/examples/go.sum index 6272e7a7c..4de6b486d 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -118,6 +118,8 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -236,6 +238,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= diff --git a/examples/http/cors/main.go b/examples/http/cors/main.go new file mode 100644 index 000000000..379a37a9c --- /dev/null +++ b/examples/http/cors/main.go @@ -0,0 +1,36 @@ +package main + +import ( + "log" + + "github.com/go-kratos/kratos/v2" + "github.com/go-kratos/kratos/v2/transport/http" + "github.com/gorilla/handlers" +) + +func hello(ctx http.Context) error { + name := ctx.Vars().Get("name") + return ctx.String(200, "hellowolrd "+name) +} + +func main() { + httpSrv := http.NewServer( + http.Address(":8000"), + http.Filter(handlers.CORS( + handlers.AllowedOrigins([]string{"*"}), + handlers.AllowedHeaders([]string{"GET", "POST"}), + )), + ) + route := httpSrv.Route("/") + route.GET("/helloworld/{name}", hello) + + app := kratos.New( + kratos.Name("cors"), + kratos.Server( + httpSrv, + ), + ) + if err := app.Run(); err != nil { + log.Fatal(err) + } +}