当前位置: 首页 > news >正文

ppt要怎么做网站网址大全

ppt要怎么做网站,网址大全,今日特大军事新闻,做网站赚钱吗 怎么赚grpc健康检查网关跨域配置 grpc健康检查 grpc健康检查使用 服务端配置 import ("google.golang.org/grpc/health""google.golang.org/grpc/health/grpc_health_v1" )//添加健康检查服务,多路复用 grpc_health_v1.RegisterHealthServer(s, health.NewSe…

grpc健康检查网关跨域配置

grpc健康检查

grpc健康检查使用

服务端配置
import ("google.golang.org/grpc/health""google.golang.org/grpc/health/grpc_health_v1"
)//添加健康检查服务,多路复用
grpc_health_v1.RegisterHealthServer(s, health.NewServer())
网关配置

gateway.go

package gatewayimport ("context""flag""fmt""google.golang.org/grpc/health/grpc_health_v1""net/http""user/user-server/gateway/middleware""github.com/grpc-ecosystem/grpc-gateway/v2/runtime""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure"_ "google.golang.org/grpc/grpclog"gw "user/proto"  // Update
)var (// command-line options:// gRPC server endpointgrpcServerEndpoint = flag.String("grpc-server-endpoint",  "localhost:50051", "gRPC server endpoint")
)func Run() error {ctx := context.Background()ctx, cancel := context.WithCancel(ctx)defer cancel()// 请求时,将http header中某些字段转发到grpc上下文inComingOpt :=  runtime.WithIncomingHeaderMatcher(func(s string) (string, bool) {fmt.Println("header:" + s)switch s {case "Service-Authorization":fmt.Println("Service-Authorization hit")return "Service-Authorization", truedefault:return "", false}})// 响应后,grpc上下文转发到http头部outGoingOpt := runtime.WithOutgoingHeaderMatcher(func(s string) (string, bool) {return "", false})//创建连接,用于健康检查conn, err := grpc.Dial(*grpcServerEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {return err}// Register gRPC server endpoint// Note: Make sure the gRPC server is running properly and accessible// runtime.WithHealthEndpointAt() 指定路径, 转发Header到grpc上下文在这是不生效的inCommingOpt 是不生效的,因为我们在这弄了个客户端,需要手动转发操作。或者排除掉,我们这选择排除掉mux := runtime.NewServeMux(inComingOpt, outGoingOpt, runtime.WithHealthzEndpoint(grpc_health_v1.NewHealthClient(conn)))//添加文件上传处理函数mux.HandlePath("POST", "/upload", uploadHandler)handler := middleware.Cors(mux)opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}err = gw.RegisterUserHandlerFromEndpoint(ctx, mux,  *grpcServerEndpoint, opts)if err != nil {return err}// Start HTTP server (and proxy calls to gRPC server endpoint)return http.ListenAndServe(":8081", handler)
}

如果网关中设置了拦截器之类的进行鉴权判断,可以通过FullName="/grpc.health.v1.Health/Check"去忽略鉴权

监控检查默认请求 http://localhost:8081/healthz

grpc网关跨域配置

采用中间件的形式封装httphandler

package middlewareimport "net/http"func Cors(handler http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {method := r.Methodorigin := r.Header.Get("Origin")if origin != "" {// 允许来源配置w.Header().Set("Access-Control-Allow-Origin", "*") // 可将将 * 替换为指定的域名w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE, PATCH")w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")w.Header().Set("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")w.Header().Set("Access-Control-Allow-Credentials", "true")}if method == "OPTIONS" {w.WriteHeader(http.StatusNoContent)return}handler.ServeHTTP(w, r)})
}

然后修改gateway

gateway.go

package gatewayimport ("context""flag""fmt""google.golang.org/grpc/health/grpc_health_v1""net/http""user/user-server/gateway/middleware""github.com/grpc-ecosystem/grpc-gateway/v2/runtime""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure"_ "google.golang.org/grpc/grpclog"gw "user/proto"  // Update
)var (// command-line options:// gRPC server endpointgrpcServerEndpoint = flag.String("grpc-server-endpoint",  "localhost:50051", "gRPC server endpoint")
)func Run() error {ctx := context.Background()ctx, cancel := context.WithCancel(ctx)defer cancel()// 请求时,将http header中某些字段转发到grpc上下文inComingOpt :=  runtime.WithIncomingHeaderMatcher(func(s string) (string, bool) {fmt.Println("header:" + s)switch s {case "Service-Authorization":fmt.Println("Service-Authorization hit")return "Service-Authorization", truedefault:return "", false}})// 响应后,grpc上下文转发到http头部outGoingOpt := runtime.WithOutgoingHeaderMatcher(func(s string) (string, bool) {return "", false})//创建连接,用于健康检查conn, err := grpc.Dial(*grpcServerEndpoint, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {return err}// Register gRPC server endpoint// Note: Make sure the gRPC server is running properly and accessible// runtime.WithHealthEndpointAt() 指定路径, 转发Header到grpc上下文在这是不生效的inCommingOpt 是不生效的,因为我们在这弄了个客户端,需要手动转发操作。或者排除掉,我们这选择排除掉mux := runtime.NewServeMux(inComingOpt, outGoingOpt, runtime.WithHealthzEndpoint(grpc_health_v1.NewHealthClient(conn)))//添加文件上传处理函数mux.HandlePath("POST", "/upload", uploadHandler)handler := middleware.Cors(mux)opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}err = gw.RegisterUserHandlerFromEndpoint(ctx, mux,  *grpcServerEndpoint, opts)if err != nil {return err}// Start HTTP server (and proxy calls to gRPC server endpoint)return http.ListenAndServe(":8081", handler)
}

更多grpc跨域配置的内容见

[gin中间件编程与跨域配置](

http://www.15wanjia.com/news/9865.html

相关文章:

  • 网站入侵怎么做襄阳seo培训
  • 闵行网站制作汽车营销策划方案ppt
  • 网站怎么做性能测试2345网址导航浏览器
  • 南昌seo营销郑州搜索引擎优化公司
  • 柳州做网站去哪家公司好网络营销的特点包括
  • 网站开发 验收seo专员是什么
  • wordpress 链接 弹窗seo快照推广
  • 做暧免费网站怎样搭建网站
  • 做网站服务器哪种好上海谷歌优化
  • 网站优化关键词排名页面优化的方法有哪些
  • 上线倒计时单页网站模板二维码推广赚佣金平台
  • 中山哪里有做微网站的百度推广年费多少钱
  • 网站挂马检测流程图宁波最好的seo外包
  • 菏泽市城乡建设局网站推广引流渠道有哪些
  • 绍兴 网站制作企业网络营销策划书
  • 三只松鼠网站推广策略石家庄网络推广平台
  • 韩国优秀网站设计搜易网服务内容
  • 武汉 网站建设成人教育机构排行前十名
  • 徐州建设网站价格网络营销策划书总结
  • 网站建设实训 课程标准外链管理
  • 海口建设工程信息网站网站收录工具
  • 模板做网站廊坊快速优化排名
  • 海南做网站seo营销培训
  • 手机模板网站模板点击器
  • 用vs2010做网站css学新媒体运营最好的培训学校
  • 网站系统怎么做注册一个域名需要多少钱
  • wordpress安装微信登录插件企业seo优化
  • 怎样做网页游戏网站seo薪酬水平
  • 网站后台如何修改新闻发布时间友情链接交换平台源码
  • 杭州论坛网站制作免费友情链接网站