登录
首页 >  Golang >  Go问答

GRPC 缺少某些标头

来源:stackoverflow

时间:2024-03-19 14:54:24 300浏览 收藏

使用 gRPC 禁用客户端缓存时,某些标头(如 Pragma 和 Expires)可能不会在响应中显示。这可能是由于以下原因之一: * 仅设置了标头,但没有发送。 * 使用 curl 时未指定 `--http2` 选项。 * curl 可能无法正确显示 HTTP/2 标头。建议使用 `grpcurl` 来查看标头。

问题内容

我有以下代码来禁用 get api 的客户端缓存:

headers := metadata.Pairs(
    "Cache-Control", "no-cache, no-store, must-revalidate",
    "Pragma", "no-cache",
    "Expires", "0",
)
err := grpc.SetHeader(ctx, headers)

当我使用 curl -i api 时,响应显示 cache-control: no-cache, no-store, must-revalidate,但没有 pragma 或 expires。我认为我正在使用正确的方法来设置这些。 grpc 不支持某些标头吗?


解决方案


我认为没有任何标头限制(尽管 Pragma 可能存在问题,即 HTTP 1.0,请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Pragma)。也许是以下原因之一:

  1. 您只设置了Header,但不发送它,请参见https://pkg.go.dev/google.golang.org/grpc?tab=doc#SetHeader
  1. 也许 curl 在这里被误用,您似乎没有指定 --http2 选项(请参阅 Will I be able to use CURL to get HTTP/2 headers?),也许您可​​以利用 grpcurlhttps://github.com/fullstorydev/grpcurl

以上就是《GRPC 缺少某些标头》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>