我正在使用Google Cloud Endpoints和Google Cloud Functions以及Google ID令牌身份验证来建立一个宠物项目。我已经按照this和this指南进行设置,但是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获取用户信息吗?
我刚刚确认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