如果使用授权承载令牌,则 400 错误请求

2023-12-11

我正在使用 PostMan 来解决我的 Angular / NodeJS 应用程序中的奇怪 400 错误。

我正在尝试获取https://example.com/login.html并且请求有两个标头:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...== and Accept: text/html

这会返回一个400 Bad Request错误(服务器:cloudflare-nginx)

这工作正常(返回200) if:

  • 我在本地环境中访问该文件http://localhost:5000/login.html(没有 https 因素?)-或-

  • 我删除Authorization: Bearer从标题

如果我查看 NodeJS 服务器日志,我什至看不到请求通过。所以/login.html我想,甚至没有被击中,因为快递在我之前拒绝了它app.use(logger('dev'));把它捡起来。

更新:我相信在请求到达 Heroku 之前,Cloudflare 会以 400 进行回扣。

还有几点:

  • 我正在使用 JWT 对用户进行身份验证,这就是不记名令牌的来源。

  • 如果我访问其他端点,例如/profile使用承载令牌,它可以通过解码令牌来正确响应用户配置文件。

我的问题是:

  • 当这个请求在其他端点上工作时,为什么会是“错误请求”?

  • 有没有办法捕获此请求并在请求返回 400 之前对请求执行某些操作?


事实证明,这个问题与我的 JWT 实施有关。由于某种原因,一名用户继续收到导致这些 400 错误的令牌,即使该令牌已使用 JWT.io 验证为有效。

我做了两个重大更改来解决该问题:

  1. 我将完整的用户配置文件(长 JSON)嵌入到令牌有效负载中。我将其减少为仅其用户 ID,这既是出于性能原因(尺寸小得多),也是为了防止复杂有效负载中的某些内容导致问题。

  2. 我从 JWT-Simple 切换到jsonwebtoken在我的节点实现中。

我很高兴这有效。我的下一步是从“授权”切换为“x-encoded-auth”或其他自定义名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果使用授权承载令牌,则 400 错误请求 的相关文章

随机推荐

  • 如何在 Famo.us 的界面之间滑动?

    使用以下 Famo us 示例代码添加 10 个以 100 宽度和高度垂直显示的表面 如何添加在它们之间滑动的功能 类似于 iOS 主屏幕上的滑动方式 define function require exports module var E
  • 如何在不依赖数据库的情况下启动spring-boot应用程序?

    我的应用程序使用 Spring boot Hibernate4 mysql 作为其中的一部分 我有一个要求 即使数据库关闭 我的 sprint boot 应用程序也应该能够启动 目前 当我尝试在数据库未启动的情况下启动我的 Spring B
  • .autocomplete 不是函数错误

    下面是我的代码 我的 Html 代码是 div class ui widget div
  • 上传到 Youtube API v3 时出现错误状态 400

    我在尝试 POST 到 Youtube v3 API 时不断收到错误消息 我正在尝试获取响应 URI 以便我可以上传 Youtube 视频 这是我参考的文档 https developers google com youtube v3 do
  • 为什么 CSS3 PIE 和其他类似脚本没有在所有地方使用?

    这个问题已经被问过htc 文件 为什么不使用它们 但答案并没有真正回答任何问题 问题是 为什么会这样CSS3 PIE很多网站都没有使用 我原以为较小的公司不会知道这一点 但引起我注意的是 Twitter 但它并不使用它 是因为不标准吗 或者
  • 如何在按下按钮后每 10 分钟重复一个方法并在按下另一个按钮时结束该方法

    我正在编写一个 Android 应用程序 它可以检索手机的当前位置并将其发送到网络服务器 我希望能够按下开始按钮 让应用程序继续以预定的时间间隔 例如每 10 分钟 检索和发送位置 然后在按下另一个按钮时停止 这是我的按钮的代码 publi
  • 如何使用 R 提取 SQL 文件的内容?

    我的一位同事的文件夹 目录充满了sql声明 他也每天更新该文件夹 我想记录这些sql供期货同事发言 然而 我正在寻找一种 自动化 该过程的方法 我想过用crontab每周一次并运行R Markdown文件 自动更新现有的R Markdown
  • 对《艰难学习 Python》ex43 中的课程感到困惑吗?

    我对地图和引擎类如何一起运行这个冒险世界类型的游戏感到困惑 完整代码在这里 http learnpythonthehardway org book ex43 html 我想我理解 Map 类中发生的事情 但我真的很困惑 Engine 中发生
  • 如何设置和锁定CKEditor窗口大小?

    CKEditor 创建一个具有某种默认大小的可调整大小的窗口 是否可以将窗口设置为我想要的大小并防止其大小被调整 样式不起作用 包括 textarea 标记中的显式样式或 rows 属性 jQuery 也不起作用 使用它的高度函数 使用这些
  • 如何在 php codeigniter 中仅比较日期和年份

    我的型号 public function get payscale this gt db gt from payscale P gt join employee E E employee id P employee id this gt d
  • 使用 Python 从 HTML 中提取可读文本?

    我知道像 html2text BeautifulSoup 等实用程序 但问题是它们还提取 javascript 并将其添加到文本中 使得很难将它们分开 htmlDom BeautifulSoup webPage htmlDom findAl
  • 析构函数调用的顺序是否有原因?

    正如我在某些论坛上读到的那样 当创建派生类对象时 基类成员和方法会在内存中分配空间 但没有特定的基类对象 现在 当派生类对象超出范围时 为什么首先调用派生类析构函数 编译器的约束是什么 不能在基类析构函数之后调用派生类析构函数 如果我有错误
  • 使用 pascal (innosetup) 获取文件的最后更新时间

    在 innosetup 脚本的卸载部分中 我想添加一个检查来查看特定文件的上次更新日期时间是否发生在最近 10 分钟内 有谁知道 innosetup 兼容的 pascal 代码吗 您可以使用Windows API函数GetFileAttri
  • 如何在 Tkinter 中更新此文本框的文本?

    所以我正在用 tkinter 在 python 中制作秒表 我有用于更新工作时间的循环 但我有它 因此循环会清除文本框 然后用新数字更新文本框 虽然它不起作用 但由于某种原因它只是没有清除它 它只是不断地向框中添加数字 这是我使用过的代码
  • Java 强制转换为超类并调用重载方法

    abstract class A int met A a return 0 int met B b return 1 int met C c return 2 class B extends A int met A a return 3 i
  • 如何对 UITextField 设置字符限制

    我想对 UITextField 设置字符限制 但不知道如何操作 我希望它最多包含 16 个字符 我该怎么做呢 BOOL textField UITextField textField shouldChangeCharactersInRang
  • “复制本地”和项目参考的最佳实践是什么?

    我有一个很大的 C 解决方案文件 100 个项目 并且我正在尝试缩短构建时间 我认为 复制本地 在很多情况下对我们来说都是浪费 但我想知道最佳实践 在我们的 sln 中 应用程序 A 依赖于程序集 B 而程序集 B 又依赖于程序集 C 在我
  • Ruby:如何处理带有“坏逗号”的 CSV 文件?

    我需要处理来自 FedEx com 的包含运输历史记录的 CSV 文件 不幸的是 FedEx 似乎并没有实际测试其 CSV 文件 因为它没有引用其中包含逗号的字符串 例如 公司名称可能是 Dog Widgets Inc 但 CSV 不引用该
  • C语言中删除给定字符串前面的空格和制表符

    什么 C 函数 如果有 可以从字符串中删除所有前面的空格和制表符 在C中 字符串由指针标识 例如char str 或者可能是一个数组 无论哪种方式 我们都可以声明自己的指针 该指针将指向字符串的开头 char c str 然后我们可以让指针
  • 如果使用授权承载令牌,则 400 错误请求

    我正在使用 PostMan 来解决我的 Angular NodeJS 应用程序中的奇怪 400 错误 我正在尝试获取https example com login html并且请求有两个标头 Authorization Bearer eyJ