无可扩展服务代理转发的X-Endpoint-API-UserInfo标头

问题描述 投票:0回答:1

我正在使用Google Cloud Endpoints和Google Cloud Functions以及Google ID令牌身份验证来建立一个宠物项目。我已经按照thisthis指南进行设置,但是X-Endpoint-API-UserInfo标头没有传递给云函数。

我在this OpenAPI Yaml中设置了一个POST端点。它已部署到Cloud Endpoints,以及可扩展服务代理。当我使用gcloud auth application-default print-access-token生成的令牌从Postman调用此代码时,我发现身份验证确实有效,但是该函数中仅包含以下标头:host, user-agent, transfer-encoding, accept, accept-encoding, authorization, cache-control, forwarded, function-execution-id, postman-token, x-appengine-city, x-appengine-citylatlong, x-appengine-country, x-appengine-default-version-hostname, x-appengine-https, x-appengine-region, x-appengine-request-log-id, x-appengine-user-ip, x-cloud-trace-context, x-forwarded-for, x-forwarded-proto, x-real-ip, connection

您能帮我为什么我不能从功能中的ESP获取用户信息吗?

google-cloud-functions google-cloud-endpoints openapi
1个回答
0
投票

我刚刚确认ESP确实将X-Endpoint-Api-Userinfo标头发送到后端功能。

这是我的后端代码

cat hello.go 
// Package helloworld provides a set of Cloud Functions samples.
package helloworld

import (
        "encoding/json"
        "fmt"
        "html"
        "net/http"
)

// HelloHTTP is an HTTP Cloud Function with a request parameter.
func HelloHTTP(w http.ResponseWriter, r *http.Request) {
        for key, vals := range r.Header {
                for _, val := range vals {
                        resp := fmt.Sprintf("request-headers: %s=%s\n", key, val)
                        w.Write([]byte(resp))
                }
        }
        var d struct {
                Name string `json:"name"`
        }
        if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
                fmt.Fprint(w, "Hello, World!")
                return
        }
        if d.Name == "" {
                fmt.Fprint(w, "Hello, World!")
                return
        }
        fmt.Fprintf(w, "Hello, %s!\n", html.EscapeString(d.Name))
}

这里是后端的标题

request-headers: X-Appengine-Country=ZZ
request-headers: X-Appengine-Default-Version-Hostname=gef3fd9f75048d933-tp.appspot.com
request-headers: X-Appengine-Request-Log-Id=5db8910800ff043c9b1b0b1d300001737e67656633666439663735303438643933332d7470000161313837383661623961353931326664363534373361386233343137366433633a33000100
request-headers: X-Endpoint-Api-Userinfo=deducted
request-headers: X-Forwarded-Proto=https
request-headers: X-Real-Ip=100.117.29.55
request-headers: Connection=close
request-headers: User-Agent=curl/7.64.0
request-headers: Accept=*/*
request-headers: Authorization=Bearer deducted
request-headers: Forwarded=for="100.117.29.55";proto=https,for="107.178.206.195";proto=https
request-headers: X-Appengine-Https=on
request-headers: X-Appengine-User-Ip=107.178.206.195
request-headers: X-Endpoint-Api-Project-Id=402804073044
request-headers: X-Forwarded-For=100.117.29.55, 100.117.29.55,107.178.206.195
request-headers: Accept-Encoding=gzip
request-headers: Function-Execution-Id=fea3ox4erxsd
request-headers: X-Cloud-Trace-Context=db9bb39b72286dd6282f5319a18f72c8/9278156698602755161;o=1

© www.soinside.com 2019 - 2024. All rights reserved.