ZBLOG

grpc-gateway 跨域设置

在使用 grpc-gateway 进行跨域设置时,可以使用以下方式:

  1. 在 grpc-gateway 的启动代码中添加 CORS 中间件
import (
  "net/http"
  "github.com/grpc-ecosystem/grpc-gateway/runtime"
)

func main() {
  // 创建 gRPC server
  grpcServer := ...

  // 创建 HTTP mux
  mux := runtime.NewServeMux()

  // 注册 gRPC service 到 mux 中
  err := myservice.RegisterMyServiceHandlerFromEndpoint(
    context.Background(),
    mux,
    "localhost:50051",
    []grpc.DialOption{grpc.WithInsecure()},
  )
  
  if err != nil {
      log.Fatalf("failed to register gateway: %v", err)
  }

  // 添加 CORS 中间件
  headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"})
	originsOk := handlers.AllowedOrigins([]string{"*"})
	methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

	http.ListenAndServe(":8080", handlers.CORS(headersOk, originsOk, methodsOk)(mux))
}
  1. 使用 Nginx 等反向代理服务器进行跨域设置

在使用 Nginx 等反向代理服务器进行跨域设置时,需要在 Nginx 配置文件中添加如下内容:

location /my-service/ {
   # 设置允许跨域的 origin,可以是单个或多个值,用空格隔开。
   add_header 'Access-Control-Allow-Origin' '*';
   # 允许浏览器发送的请求方法,可以是单个或多个值,用逗号隔开。
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   # 允许浏览器发送的请求头,可以是单个或多个值,用逗号隔开。
   add_header 'Access-Control-Allow-Headers' 'Authorization, X-Requested-With, Content-Type';
}

其中 /my-service/ 是 grpc-gateway 的反向代理服务地址。通过这种方式设置跨域时,需要注意将 grpc-gateway 的反向代理服务地址添加到 Nginx 配置文件中。

以上两种方式都可以实现 grpc-gateway 的跨域设置。具体选择哪种方式根据具体情况而定。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5950

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?