HTML   发布时间:2022-04-14  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Web Notification推送在Chrome上从python中抛出400大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用pywebpush 1.4.0库从Django后端推送Web Notifications.我正在使用的密钥是从 https://web-push-codelab.glitch.me/获得的.订阅似乎工作正常.此外,我在Firefox上测试了它,它在那里工作正常.

我在推送Chrome时收到以下错误服务器端:

Push failed: <Response [400]>: <HTML>
<HEAD>
<titlE>UnauthorizedRegistration</titlE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>UnauthorizedRegistration</H1>
<H2>Error 400</H2>
</BODY>
</HTML>

奇怪的是,我的后端控制3个域名,推送工作正常,即使对于一个域上的Chrome而不是其他域名.我排除了以下可能的问题:

>不正确的私钥和公钥对,因为它在Firefox上正常工作
>过时的pywebpush库在Chrome上的一个域上它工作正常
>很少有答案(Chrome Web Notification Push Unauthorized Registration exception)指出要更新pywebpush安装的py-vapid版本,但它的版本已经是py-vapid == 1.3.0

我看到的唯一可能性是Chrome是否允许来自同一后端的不同域上的推送通知.是否有人知道这样的限制或者可以帮助我解决其他任何指针?

注意:我正在为所有三个域使用不同的密钥.

这是我用来推送的代码:

from pywebpush import webpush
webpush(subscription_info,data,vapid_private_key=vapid_private_key,vapid_claims={"sub": "mailto:xyz@example.com"})

subscription_info是订阅用户时收到的json,vapid_private_key是相应的私钥.

解决方法

FAQ列出了以下错误原因(引用):

>如果您未能在对FCM的请求中定义Authorization标头.
>用于订阅用户的应用程序密钥与用于签署Authorization标头的密钥不匹配.
> JWT中的到期时间无效,即到期时间超过24小时或JWT已过期.
> JWT格式错误或值无效

它还说明了在请求中添加applicationServerKey的要求,并且这不是Firefox中的强制要求.您的问题可能在于:您确定vapid_private_key变量是否为每个域引用了正确的私钥?它可能是实际上始终是您的工作域的关键.

如果我们有更多您使用的代码,可能更容易找到一些潜在的错误. Chrome每个服务器只需要一个密钥,但应该能够处理几个不同的服务器订阅.

大佬总结

以上是大佬教程为你收集整理的Web Notification推送在Chrome上从python中抛出400全部内容,希望文章能够帮你解决Web Notification推送在Chrome上从python中抛出400所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。