如何在 Golang gRPC 中获取客户端 IP 地址和用户代理?

2023-12-22

我设置了一系列 gRPC 请求和响应,它们都工作正常,但当我尝试获取客户端 IP 地址和调用我的 gRPC API 的用户代理时,我陷入困境。

我阅读了 Go gRPC 文档和其他来源,但没有找到太多有价值的信息。他们中很少有人谈论 Golang 中的 gRPC。

设置 gRPC API 时,是否应该设置一个键值来在上下文中存储 IP 地址?


在Golang GRPC中,你可以使用

func (UserServicesServer) Login(ctx context.Context, request *sso.LoginRequest) (*sso.LoginResponse, error) {
  p, _ := peer.FromContext(ctx)
  request.Frontendip = p.Addr.String()
  .
  .
}

但是,不要忘记导入"google.golang.org/grpc/peer"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Golang gRPC 中获取客户端 IP 地址和用户代理? 的相关文章

  • Go 编程 - 使用指针绕过访问权限

    假设我的项目有以下层次结构 fragment fragment go main go 并且在fragment go我有以下代码 只有一个 getter 没有 setter package fragment type Fragment str
  • 无法封送,(实现encoding.BinaryMarshaler)。具有多个对象的 go-redis Sdd

    我有下面一段代码 我试图将一个数组添加到 redis 集中 但它给了我一个错误 package main import encoding json fmt github com go redis redis type Info struct
  • 数据库连接最佳实践

    我有一个使用 net http 的应用程序 我使用 http 注册了一些处理程序 这些处理程序需要从数据库中获取一些内容 然后才能继续编写响应并完成请求 我的问题是连接到该数据库的最佳实践是什么 我希望它能够以每分钟 1 个请求或每秒 10
  • 如何自定义解析错误的 HTTP 400 响应?

    我编写了一个 REST API 服务 要求所有响应均为 JSON 但是 当 Go HTTP 请求解析器遇到错误时 它会返回 400 作为纯文本响应 而不会调用我的处理程序 例子 gt curl i H Authorization Basic
  • Bazel 构建缺少严格的依赖关系

    我正在尝试使用 brazel 构建 Go 应用程序 它是一个现有的私有 GitHub 存储库 位置如下 github xyz com repo name 我正在研究 我的目标是从 main go 文件创建一个二进制文件 该文件的方法依赖于其
  • 当变量更新时动态刷新模板的一部分golang

    在Golang中 当变量更新时可以刷新模板的一部分吗 例如 我们可以在 Angular js 中找到这一点 基本上在我的代码中 我通过 ajax 中的邮政编码查找地址 它显示我找到的该邮政编码的用户列表 Here is a sample o
  • Golang - 更改 Windows 上的构建工作路径

    我正在使用 SublimeText3 GoSublime 插件 在 Windows 8 上测试简单的 Go 程序 go run v example go 在运行之前它正在内部编译 应用程序数据 本地 温度 目录 我的防病毒程序认为这是病毒并
  • gRPC 客户端重新连接逻辑导致服务器端打开重复流

    我有一个使用两个双向流的 gRPC 客户端 由于目前未知的原因 当我们每小时发送一次 keepAlive ping 时 会出现 onError 并带有statusRuntimeException在两个流上都被调用 为了处理重新连接 我在 j
  • 如何在 Go 中表示可选字符串?

    我希望建模一个可以有两种可能形式的值 不存在或字符串 执行此操作的自然方法是Maybe String or Optional
  • 无法连接到代理“证书由未知机构签名”

    我正在尝试通过 Kubernetes 部署上的 cloudsql proxy 容器连接到 CloudSQL 实例 我已安装 cloudsql 凭据以及值GOOGLE APPLICATION CREDENTIALS set 但是 我的日志中仍
  • 是否支持动态变量?

    我想知道Go中是否可以动态创建变量 我在下面提供了一个伪代码来说明我的意思 我将新创建的变量存储在切片中 func method slice make type for i 0 i lt 10 i var variable i i slic
  • 按引用或按值扫描功能

    我有以下代码 statement SELECT id from source where mgmt 1 var exists string errUnique dr db QueryRow statement mgmt Scan exist
  • nsq 无法通过连接到 nsqlookupd 来消费消息

    我尝试使用 docker compose 来运行 nsq docker compose yml如下 version 3 services nsqlookupd image nsqio nsq command nsqlookupd ports
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 重新插入通道导致死锁

    我有稳定的入站 作业 流 将其输入到无缓冲通道中 我有一个for range循环来迭代项目并处理它们 如果处理该项目失败 我会将项目重新插入通道中 以便稍后重试 问题是当我将项目重新插入通道时 它陷入僵局 我明白为什么会发生这种情况 处理器
  • (转)如何使用toml文件?

    正如标题 我想知道如何使用 golang 中的 toml 文件 在此之前 我展示了我的 toml 示例 这样对吗 datatitle enable true userids 12345 67890 datatitle 12345 prop1
  • 如何在Go中将字节数组转换为字符串[重复]

    这个问题在这里已经有答案了 byte字符串会引发错误 string byte n 也会引发错误 顺便说一下 例如 文件名的 sha1 值是字符串 它是否明确需要 utf 8 或任何其他编码集 谢谢 我用来转换的最简单方法byte to st
  • 是否可以使用 go:generate 重定向 stdin/stdout

    我有一个充当管道的工具 它从标准输入读取数据并将源代码写入标准输出 是否可以设置输入 输出重定向并将此类工具与 go generate 一起使用 就像是 go generate tool lt file txt gt file go 我想出
  • 为什么 Go 中的函数不能命名为“init”?

    所以 今天在编码时我发现创建一个名为init产生错误method init not found 但是当我将其重命名为startup一切都很好 init 这个词是为 Go 中的某些内部操作而保留的 还是我在这里遗漏了一些东西 是的 该功能in

随机推荐

  • 为什么 (a | b ) 等于 a - (a & b) + b?

    我正在寻找一种使用 Oracle 数据库执行 BITOR 的方法 并遇到了一个仅使用 BITAND 的建议 将 BITOR a b 替换为 a b BITAND a b 我手动测试了几次 并验证它似乎适用于我能想到的所有二进制数 但我无法快
  • 将图像显示到 Windows 窗体中

    我想在 Windows 窗体上显示图像 但我已经这样做了 但图像没有显示出来 我哪里做错了 这是代码 private void Images object sender EventArgs e PictureBox pb1 new Pict
  • 如何使用 php 验证不一致端点?

    我在创建 Discord 机器人时遇到一些问题 我希望它能够响应斜杠命令 但要做到这一点 我需要验证端点 我使用的是 PHP 7 4 并且无法使用任何外部库 托管在不允许使用它们的服务器上 我找到了 PHP 的文档 但它们确实需要库才能工作
  • 在 Xcode 上的图像上添加文本

    我想制作一个类似于某些贺卡应用程序的 iPhone 应用程序 我可以在一些预先准备好的背景图像 卡片 上写入文本 我该如何写这段文字 如何将背景图像 文本保存在一个图像文件中 Thanks 这是一种将字符串刻录成图像的方法 您可以调整字体大
  • 最快的实时解压算法

    我正在寻找一种算法 以最小的开销实时解压缩数据块 1k 30k 压缩速度最好要快 但不如解压速度那么重要 据我所知 LZO1X 是最快的 我错过了什么吗 理想情况下 该算法不受 GPL 约束 lz4 https github com lz4
  • 如何清除 MassTransit 队列?

    我想在集成测试设置例程中删除队列中的所有消息 如何实现 谷歌搜索 智能感知暴力没有运气 如果重要的话 我使用 RabbitMq 作为传输 无法从 MassTransit 内的队列中 删除 对于测试 您可以通过使用临时的随机队列 URIrab
  • 如何使用 Polymer 将自定义字体导入应用程序或元素?

    如何将自定义字体导入 Polymer 应用程序或元素 根据 tweightman 的聚合物松弛通道 https polymer slack com
  • React Hook useEffect 缺少依赖项:“list”

    运行以下代码后 我收到以下错误 React Hook useEffect 缺少依赖项 list 包含它或删除依赖项数组react hooks exhaustive deps 我找不到警告的原因 import React useState u
  • 在控制器构造函数中使用 User.Identity.Name 定义用户

    对于要与用户帐户交互的操作 除了在调用控制器上的任何操作后立即将该对象添加到 ViewData TheUser 之外 我还想创建一个 TheUser 对象 如果用户已登录 它将从数据库中获取用户的信息 如果没有 TheUser 对象将为空
  • 是否可以编写命令来支持多行参数,即其中包含换行符,如heredocs?

    Overview 如何编写一个 sbt 命令来支持其中包含换行符的参数 heredocs http en wikipedia org wiki Here document 我想要一个 sbt 命令 用户可以在其中粘贴多行文本块 然后将其处理
  • 自定义进度条中的圆角渐变

    你会如何制作圆角渐变ProgressBar就像屏幕上一样 我现在拥有的 pb shape xml
  • 在服务器上使用旧版本的 SVN 进行签出

    我已经厌倦了检查这个存储库 但由于主机和客户端计算机上的 SVN 版本不同 它返回一个解压错误 svn co http svn rdlab cs upc edu subversion asiya public asiya A asiya b
  • 使用现有项目将 json 反序列化为 C# 列表

    给定以下课程 class Report public Report this Fields new List
  • Sqoop 将所有表导入 hive 时遇到以下语句

    默认情况下 表将移动到 HDFS 而不是仓库目录 user hive warehouse sqoop import all tables num mappers 1 connect jdbc mysql quickstart clouder
  • 为什么 PostgreSQL (9.1) 不使用索引进行简单的相等选择?

    我的桌子lead有一个索引 d lead Indexes lead pkey PRIMARY KEY btree id lead account c btree account c lead email btree email lead i
  • 使用azure功能在移动应用程序中进行身份验证

    我正在尝试开发一个无服务器后端对于我的 xamarin 应用程序 为此我选择了天蓝色函数 现在我已经知道了Azure 移动应用程序提供一个SDK为此 我们可以轻松启用验证有以下多种方式 1 Azure Active Directory 2
  • Google Maps API v3 - 不同缩放级别上的不同标记/标签

    我想知道谷歌是否有可能具有在不同缩放级别查看不同标记的功能 例如 在缩放级别 1 上 我希望在中国上方有一个标记 其标签上写着 5 当用户放大时 假设缩放级别为 4 我希望之前的标记和标签消失 我想要 5 个新的标记 标签 每个标记 标签位
  • opencart 上的权限被拒绝

    我试图为 opencart 创建一个支付模块 当我尝试在设置页面中保存详细信息时 出现错误 权限被拒绝 即使我以管理员身份登录 有人能帮我吗 你需要给自己设置权限 去 SYSTEM gt USERS gt USER GROUPS 在管理面板
  • iOS:使用证书和签名验证文件 - 公钥错误,验证失败

    我有三样东西 一个文件 一个签名文件和一个 X509 证书文件 cer 必须使用证书和签名文件中的公钥来验证该文件 我想使用 Security h CommonCrypto 来完成此操作 到目前为止我尝试过的 load all the fi
  • 如何在 Golang gRPC 中获取客户端 IP 地址和用户代理?

    我设置了一系列 gRPC 请求和响应 它们都工作正常 但当我尝试获取客户端 IP 地址和调用我的 gRPC API 的用户代理时 我陷入困境 我阅读了 Go gRPC 文档和其他来源 但没有找到太多有价值的信息 他们中很少有人谈论 Gola