gpt4 book ai didi

python - Web 通知推送在 Chrome 上从 python 抛出 400

转载 作者:太空狗 更新时间:2023-10-29 21:11:43 26 4
gpt4 key购买 nike

我正在使用 pywebpush 1.4.0 库从 Django 后端推送 Web 通知。我使用的 key 是从 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 在一个域上推送也能正常工作,而在其他域上却不起作用。我排除了以下可能的问题:

我看到的唯一可能性是 Chrome 是否不允许来自同一后端的不同域的推送通知。有没有人知道这样的限制或者可以在这里帮助我提供任何其他指示?

注意:我为所有三个域使用不同的 key 。

这是我用来推送的代码:

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 请求中定义授权 header 。
  • 您用于订阅用户的应用程序 key 与用于签署授权 header 的 key 不匹配。
  • 您的 JWT 中的过期时间无效,即过期时间超过 24 小时或 JWT 已过期。
  • JWT 格式错误或具有无效值

它还声明了向请求添加 applicationServerKey 的要求,而这在 Firefox 中不是强制要求的。您的问题可能出在这里:您确定 vapid_private_key 变量指的是每个域的正确私钥吗?它可能实际上一直是您工作域的 key 。

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

关于python - Web 通知推送在 Chrome 上从 python 抛出 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49995704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com