Google Cloud Scheduler - HTTP headers 未遵守
Google Cloud Scheduler - HTTP headers not respected
我正在尝试使用 Google Cloud Scheduler 向我的应用程序发送推送:
gcloud beta scheduler jobs create http PUSH --schedule="0 * * * *" --uri="https://fcm.googleapis.com/fcm/send" --description="desc" --headers="Authorization: key=<AUTHKEY> --http-method="POST" --message-body="{\"to\":\"/topics/allDevices\",\"priority\":\"low\",\"data\":{\"success\":\"ok\"}}"
结果总是401 Unauthorized。发出命令后:
gcloud beta scheduler jobs describe PUSH
我没有收到这些 headers 回来:
description: desc
httpTarget:
body: eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19 <--- THIS IS WEIRD
headers:
Content-Type: application/octet-stream
User-Agent: Google-Cloud-Scheduler
httpMethod: POST
uri: https://fcm.googleapis.com/fcm/send
lastAttemptTime: '2018-11-07T20:32:37.657408Z'
name: projects/..../locations/europe-west1/jobs/PUSH
retryConfig:
maxBackoffDuration: 3600s
maxDoublings: 16
maxRetryDuration: 0s
minBackoffDuration: 5s
schedule: 0 * * * *
scheduleTime: '2018-11-07T21:00:00.681498Z'
state: ENABLED
status:
code: 16
timeZone: Etc/UTC
userUpdateTime: '2018-11-07T20:29:15Z'
关于body的第一个问题:
body:eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19
<--- THIS IS WEIRD
这是
的base64编码
{\"to\":\"/topics/allDevices\",\"priority\":\"low\",\"data\":{\"success\":\"ok\"}}
Google 正在获取您的 --message-body
并将其编码为 base64
。
接下来是关于 header 的问题。您的“--headers”中有几个错误。
--headers="Authorization: key=AUTHKEY
您在 AUTHKEY
后缺少引号。我会假设这个问题只是编辑错误造成的问题。 (请注意,我不知道如何在此响应中包含 less-than 和 greater-than 字符)。
但是,--headers
的语法是错误的。 --headers
需要 KEY=VALUE
,而不是 KEY:VALUE
。在此示例中,KEY
是 Authorization
,VALUE
是 key=AUTHKEY
。
--headers="Authorization=key=AUTHKEY"
我正在尝试使用 Google Cloud Scheduler 向我的应用程序发送推送:
gcloud beta scheduler jobs create http PUSH --schedule="0 * * * *" --uri="https://fcm.googleapis.com/fcm/send" --description="desc" --headers="Authorization: key=<AUTHKEY> --http-method="POST" --message-body="{\"to\":\"/topics/allDevices\",\"priority\":\"low\",\"data\":{\"success\":\"ok\"}}"
结果总是401 Unauthorized。发出命令后:
gcloud beta scheduler jobs describe PUSH
我没有收到这些 headers 回来:
description: desc
httpTarget:
body: eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19 <--- THIS IS WEIRD
headers:
Content-Type: application/octet-stream
User-Agent: Google-Cloud-Scheduler
httpMethod: POST
uri: https://fcm.googleapis.com/fcm/send
lastAttemptTime: '2018-11-07T20:32:37.657408Z'
name: projects/..../locations/europe-west1/jobs/PUSH
retryConfig:
maxBackoffDuration: 3600s
maxDoublings: 16
maxRetryDuration: 0s
minBackoffDuration: 5s
schedule: 0 * * * *
scheduleTime: '2018-11-07T21:00:00.681498Z'
state: ENABLED
status:
code: 16
timeZone: Etc/UTC
userUpdateTime: '2018-11-07T20:29:15Z'
关于body的第一个问题:
body:eyJ0byI6Ii90b3BpY3MvYWxsnByaW9yaXR5IjoRGV2aWNlcyIsIiaGlnaCIsImRhdGEiOnsic3VjY2VzcyI6Im9rIn19 <--- THIS IS WEIRD
这是
的base64编码{\"to\":\"/topics/allDevices\",\"priority\":\"low\",\"data\":{\"success\":\"ok\"}}
Google 正在获取您的 --message-body
并将其编码为 base64
。
接下来是关于 header 的问题。您的“--headers”中有几个错误。
--headers="Authorization: key=AUTHKEY
您在 AUTHKEY
后缺少引号。我会假设这个问题只是编辑错误造成的问题。 (请注意,我不知道如何在此响应中包含 less-than 和 greater-than 字符)。
但是,--headers
的语法是错误的。 --headers
需要 KEY=VALUE
,而不是 KEY:VALUE
。在此示例中,KEY
是 Authorization
,VALUE
是 key=AUTHKEY
。
--headers="Authorization=key=AUTHKEY"