Firefox 推送通知 - 通过 curl 发送数据
Firefox push notifications - send data via curl
Mozilla
Firefox
since 44 version (unlike 49 version of Google
Chrome
) supports push-notifications
with payload. One can see examples here.
Firefox
demo project, which is mentioned on Firefox
wiki page,生成curl
运行参数为:
curl -I -X POST --header "ttl: 60" "https://updates.push.services.mozilla.com/push/gAAAAABW4ccaidtFYOP2m56-XiY_NSKDXV1QiJ-4cpZG5BF-W7FjWE17SDt-h-b4b4VJamuvL30OcI9msyM1bupE9YHrwQZH4D7Uh2YS8cE_Tpvnvm3CgpBjblH58sE78HQjjbahB5NG4CkkKLj13gz0eB9mOAVGfcM3qo4Z61M5fn_6HZqLvCg="
现在如何将负载添加到 curl
,它将被传送到已注册的 service-worker
?
这并不简单,因为负载需要加密。
如果您只是对测试功能感兴趣,我建议尝试 this page。最后,如果您按照这些步骤操作,它会打印 curl
命令以发送通知。
如果您想了解有关如何加密负载的更多信息,请参阅标准 here。
如果您想使用 Node.js 库来隐藏发送负载的复杂性,可以使用 web-push library.
假设:
p256dh key = BPdbyNlxaH6zreGrZfHWtct8xVR9g1LjOagGsdyxllxT-BsWC5zFBlp4AsD4uXZ3kAA6zfqQPLoLxEklSI2muoU
salt = FD9bsatP7pGf6qeO_XVu_Q
local key = BMGAejiMWatMYFfEdV-YIZpbMeW9N41tav6DW_S7eNRP6In9wwKs-XpKGGkxZUI3-bPti5HBBLY1E8uVRlsF6FE
一个示例命令是:
echo -ne "\x12\xdb\xd8\xc5\xcc\x92\x0f\xf2\xa5\x9d\x8c\xca\xea\x58\x13\xf6\xbd\x9a\x14\xa5\xca\x6f\xa0\xb3\x6c\x73\x32\x4a\x4e\x03\x55\x8c\x11\x62\x45\x8d" > encrypted.data; curl -v -X POST https://updates.push.services.mozilla.com/push/v1/SUBSCRIPTION_ID_HERE -H "encryption-key: keyid=p256dh;dh=BMGAejiMWatMYFfEdV-YIZpbMeW9N41tav6DW_S7eNRP6In9wwKs-XpKGGkxZUI3-bPti5HBBLY1E8uVRlsF6FE" -H "encryption: keyid=p256dh;salt=FD9bsatP7pGf6qeO_XVu_Q" -H "content-encoding: aesgcm128" -H "TTL: 60" --data-binary @encrypted.data
Mozilla
Firefox
since 44 version (unlike 49 version of Google
Chrome
) supports push-notifications
with payload. One can see examples here.
Firefox
demo project, which is mentioned on Firefox
wiki page,生成curl
运行参数为:
curl -I -X POST --header "ttl: 60" "https://updates.push.services.mozilla.com/push/gAAAAABW4ccaidtFYOP2m56-XiY_NSKDXV1QiJ-4cpZG5BF-W7FjWE17SDt-h-b4b4VJamuvL30OcI9msyM1bupE9YHrwQZH4D7Uh2YS8cE_Tpvnvm3CgpBjblH58sE78HQjjbahB5NG4CkkKLj13gz0eB9mOAVGfcM3qo4Z61M5fn_6HZqLvCg="
现在如何将负载添加到 curl
,它将被传送到已注册的 service-worker
?
这并不简单,因为负载需要加密。
如果您只是对测试功能感兴趣,我建议尝试 this page。最后,如果您按照这些步骤操作,它会打印 curl
命令以发送通知。
如果您想了解有关如何加密负载的更多信息,请参阅标准 here。
如果您想使用 Node.js 库来隐藏发送负载的复杂性,可以使用 web-push library.
假设:
p256dh key = BPdbyNlxaH6zreGrZfHWtct8xVR9g1LjOagGsdyxllxT-BsWC5zFBlp4AsD4uXZ3kAA6zfqQPLoLxEklSI2muoU
salt = FD9bsatP7pGf6qeO_XVu_Q
local key = BMGAejiMWatMYFfEdV-YIZpbMeW9N41tav6DW_S7eNRP6In9wwKs-XpKGGkxZUI3-bPti5HBBLY1E8uVRlsF6FE
一个示例命令是:
echo -ne "\x12\xdb\xd8\xc5\xcc\x92\x0f\xf2\xa5\x9d\x8c\xca\xea\x58\x13\xf6\xbd\x9a\x14\xa5\xca\x6f\xa0\xb3\x6c\x73\x32\x4a\x4e\x03\x55\x8c\x11\x62\x45\x8d" > encrypted.data; curl -v -X POST https://updates.push.services.mozilla.com/push/v1/SUBSCRIPTION_ID_HERE -H "encryption-key: keyid=p256dh;dh=BMGAejiMWatMYFfEdV-YIZpbMeW9N41tav6DW_S7eNRP6In9wwKs-XpKGGkxZUI3-bPti5HBBLY1E8uVRlsF6FE" -H "encryption: keyid=p256dh;salt=FD9bsatP7pGf6qeO_XVu_Q" -H "content-encoding: aesgcm128" -H "TTL: 60" --data-binary @encrypted.data