JWT 令牌与 AJAX、非 AJAX、JQuery

2024-02-04

我对在登录、提交和重定向期间管理 JWT 令牌感到有点沮丧。在开始之前,先介绍一下我的技术堆栈,以防万一:

JQuery/Html -> Node.Js -> Java Restful Services -> MySQL.  

我的 java Restful 服务管理创建 JWT 令牌,将其返回到 Node.js 层,该层决定如何处理它并将其传递给客户端。这一切都非常有效。

为了获取 JWT 令牌,我向 Node 中间层发出基于 ajax 的身份验证请求,该中间层对令牌进行身份验证并返回令牌,该令牌将被立即塞入客户端的本地存储中。

现在我不想让整个网站通过ajax加载单个页面,这是一个复杂的网站,这样做是愚蠢的!我需要在携带 JWT 令牌的同时转发并导航到子页面。

这是问题(最后)...如何将 JWT 令牌发送到中间层(node.js)而不将其作为请求或发布参数附加,因为这是一个大问题?我似乎找不到一种方法将其填充到与承载相关的标头中。


您需要在客户端存储令牌,例如使用cookie or localStorage

Ajax 请求

  • Cookies:向服务器发出请求时会自动发送cookie,因此不需要添加特定的标头

  • 本地存储:需要使用 HTTP 标头在每个请求中提供令牌。

例如

POST /authenticatedService 
Host: example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

这是一个示例代码,展示如何使用 jquery 执行 ajax POST 请求

$.ajax({
    type: "POST", //GET, POST, PUT
    url: '/authenticatedService'  //the url to call
    data: yourData,     //Data sent to server
    contentType: contentType,           
    beforeSend: function (xhr) {   //Include the bearer token in header
        xhr.setRequestHeader("Authorization", 'Bearer '+ jwt);
    }
}).done(function (response) {
    //Response ok. process reuslt
}).fail(function (err)  {
    //Error during request
});

表格提交

通过表单提交,您无法控制浏览器设置的标题,因此无法设置Authorization带有不记名令牌的标头。在这种情况下,您可以

  • Cookie:将 JWT 存储在将与表单数据一起发送的 cookie 中。您需要添加额外的安全性以避免 CSRF 附加
  • 表单参数:JWT 存储在表单的隐藏字段中。

始终使用 POST(而不是 GET)以避免 JWT 缓存

Link

链接执行 GET 请求。您可以构建将 JWT 添加为查询参数的链接url?jwt=...

但是,请考虑这种情况下的安全风险。浏览器可以缓存该 url,并将其显示在日志中。如果攻击者有访问权限,他就有可能获得它们。用户还可以复制链接并在网络应用程序之外使用它(例如通过电子邮件发送......)

如果您使用cookie,则通过单击链接,令牌将自动发送到服务器,但这仅在用户经过身份验证时才有效。在这种情况下请注意 CSRF 漏洞

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

JWT 令牌与 AJAX、非 AJAX、JQuery 的相关文章

  • javascript中.match和.test有什么区别[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在浏览 JavaScript 时 我刚刚遇到了 match test 和 exec有什么不同 这是最快的 首先 exec and test
  • 在 Fabric.js 中进行裁剪的“toDataURL”函数中,Multiplier 属性无法正常工作

    我的原始尺寸canvas is 800X700 我在用clipTo要在画布的选定部分中工作 var rect new fabric Rect left 100 top 50 fill fff width 376 height 602 str
  • 如何让更大的布局适合小设备屏幕?

    我有一个小问题meta viewport元素 问题是我的布局min width比我想要使用的许多屏幕分辨率都要大 所以将其设置为 没有帮助 结果我得到的页面必须缩小以适应设备宽度 如果我什至添加像 它也不起作用 发现了一个黑客来自CSS 技
  • 在 forEach() 中使用 `this` [重复]

    这个问题在这里已经有答案了 免责声明 我正在学习 JavaScript 我有一个像这样的对象构造函数 var Palette function this colors red green blue this getColorCombinat
  • Antd datepicker (date.clone/date.load 不是函数)

    我有一个反应应用程序 有一个复选框可以禁用日期选择器 但当我使用复选框禁用它时 我无法选择任何日期 如果我删除复选框及其功能 则不会出现错误 目前 我得到 date clone 不是函数 error const dateFormat YYY
  • 如何在 d3.js 中填充 svg 圆圈内的图像

    这是我在 svg 中填充圆圈的代码 var svgContainer d3 select body append svg attr width 1000 attr height 1000 var circles svgContainer s
  • jQuery 删除函数真的删除 Dom 元素吗?

    我真的想知道 jQuery 是否remove http api jquery com remove 函数确实从 DOM 中删除元素 首先 我看了here https stackoverflow com questions 2185760 j
  • jquery 验证最小长度规则不起作用

    我有一个带有密码字段的表单 密码长度必须至少为 8 个字符
  • AngularJS 与(Angular JS + jQuery)

    我有一个关于仅使用 AngularJS 和纯 JavaScript 以及使用 AngularJS 和 jQuery 时的性能问题 ex app directive fitHeight function window return restr
  • 如何使用中间件拦截botbuilder sdk v4中的消息?

    我有一个在 botbuilder V3 上运行的机器人 其中我使用了一个中间件解释here https learn microsoft com en us azure bot service nodejs bot builder nodej
  • 如何列出特定服务器的所有成员?

    我的代码是 const list client guilds find id 335507048017952771 for user of list users console log user 1 username 这实际上没有任何作用
  • queue.js 是如何工作的?

    我一直试图理解如何Mike Bostock 的queue js https github com mbostock queue blob master queue js有效 但我看不出它是如何工作的 我不明白的部分是代码如何设法继续执行回调
  • 在成功回调之前修改 JSONP 结果

    我想从外部服务加载一些 JSON 数据 然而 它提供 foo bar useful 而我真正关心的是 有用 的部分 我需要将那部分传递给success打回来 我正在尝试使用Deferred一次从多个数据源加载 类似this https st
  • Twitter 引导选项卡和 JavaScript 事件

    我正在一个项目中使用 twitter bootstrap 特别是它的选项卡功能 http twitter github com bootstrap javascript html tabs http twitter github com b
  • jQuery 不断 ping 以获得 Ajax 响应

    如何使用 jQuery 不断运行 PHP 脚本并每秒获取响应 并将鼠标上的少量数据发送到同一脚本 我真的需要添加一些随机扩展才能让这样一个简单的计时器工作吗 迭代是人类的 递归是神圣的 L 彼得 多伊奇 http www devtopics
  • 如何使用 jquery 生成并附加随机字符串

    一般性 我想使用 jQuery 或 javascript 将随机字符串附加到元素的属性 规格 我需要引用 CDN 上的 CSS 文件 不幸的是 每次更新该 CSS 文件时 CDN 都会更改该文件的 URL 所以我不能简单地引用静态 URL
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • JavaScript:如何在 Internet Explorer 中模拟更改事件(委托)

    UPDATE 回顾 小提琴和赏金 这个问题并没有引起太多关注 所以我将花一些时间来解决这个问题 我知道我的答案和问题都过于冗长 这就是为什么我继续设置这把小提琴 http jsfiddle net vVA8N 在我看来 这是我目前必须用来接
  • 获取css规则、chrome扩展

    我正在开发 Chrome 扩展程序 它需要访问document styleSheets cssRules 它在某些网站上运行良好 例如w3school 但其他人则不然 比如堆栈溢出 我收到错误 Failed to read the cssR
  • 使用 Javascript 删除字符串的最后一个字符

    我有一个DIV与一些字符 如何在每次单击时删除文本中的最后一个字符DIV itself 删除第一个字符 div on click function this text function index text return text repl

随机推荐

  • 迭代元组列表

    我正在寻找一种干净的方法来迭代元组列表 其中每个元组都是一对 如下所示 a b c d 最重要的是 我想更改列表中的元组 标准做法是避免在迭代列表的同时更改列表 那么我应该做什么 这就是我想要的 for i in range len tup
  • setTimeout 之后事件 currentTarget 发生变化

    考虑 let sel document getElementById mys sel onchange function e console log e currentTarget null false setTimeout e gt co
  • 如何使用 Eleventy 将多个 Markdown 文件合并到 Nunjucks 模板中?

    CONTEXT Eleventy 和 Nunjucks 以及 Markdown 大量长文本 使用 Markdown 更容易创建 编辑 复杂的布局 对于 SSG 来说还是新手 GOAL 使用 Markdown 管理文本内容块 将这些 Mark
  • 打印日历月

    实现打印给定月份和年份的日历的函数 首先 提示用户 Enter the month and year 一旦用户输入有效的输入 由空格分隔的两个整数 就以类似于 UNIX 输出的格式打印出日历cal命令 例如 如果用户输入03 2014 输出
  • 了解 Spark 结构化流并行性

    我是 Spark 世界的新手 正在努力解决一些概念 使用来自 Kafka 的 Spark Structured Streaming 采购时 并行性是如何发生的 让我们考虑以下代码片段 SparkSession spark SparkSess
  • AWS Lambda 中 Python 全局变量的范围

    AWS Lambda 中全局变量的范围或生命周期是多少 例如 如果我做这样的事情 cache def lambda handler event context do something with cache do something els
  • 显示我的“乘坐优步前往那里”按钮的预计到达时间和预计金额选项

    我已将 搭乘 Uber 前往那里 按钮集成到我的应用程序中 我觉得 如果我显示目的地的预计到达时间和预计价格 对用户来说会更方便 我怎样才能实现这个目标 我现在正在遵循本指南 https github com uber rides ios
  • 将 RGB 图像数组乘以标量后,使用 plt.imshow 获取黑色图

    所以我有点困惑为什么会发生这种情况 I have a binary image 现在我想将此二进制图像转换为 RGB 空间 因此我使用dstack连接第三轴的函数 Everything works fine so far but now I
  • 从数组中删除 JSON 对象会创建“未定义”对象

    我在使用 JSON 和数组时遇到一些问题 我已经摆弄 JSON 一段时间了 并尝试通过重构旧的实现来在生产中使用一些 JSON 我有两个隐藏的文本字段 一个以 1 2 3 等格式存储 id 另一个名称 name1 name2 name3 所
  • 如何在git上共享Xcode性能测试基线?

    I have performance tests on Xcode with a baseline set as shown below 这些基线似乎是本地保存的 如断点 因此我对它们的更改不会通过 git 传输 当除了我之外的任何人运行我
  • dropzone.js 使用 content-type 直接上传到 S3

    我目前正在使用 dropzone js 通过预先签名的 URL 将图像上传到 S3 一切正常 除了我无法设置正在上传的文件的内容类型 默认情况下 它们都是通过以下方式上传的binary octet stream我无法直接在浏览器中查看它们
  • 从 github 安装/运行 gradle 插件(特别是 arquilian 插件)的正确方法?

    我想在这里使用 arquillian 插件来运行 jetty 8 https github com aslakknutsen arquillian gradle plugin https github com aslakknutsen ar
  • 詹金斯即将关闭

    有时会发生奇怪的事情 詹金斯开始显示 詹金斯将关闭 即使没有人打开此消息并重新启动詹金斯 截屏 我有一个 精简备份 插件 该插件被配置为在备份后关闭 更改了此设置 现在工作正常 找到它有点棘手 因为这个插件不在配置系统下 而是在管理詹金斯下
  • 将字典列表转换为单独的列 pandas

    我想要一个有 1 列字典列表的 df 示例 df testData 1 MLB 2 NBA 3 NFL 分为以下内容 Number Sport 1 MLB 2 NBA 3 NFL 我尝试过以下方法 pd DataFrame df testD
  • Objective C:Posing 可以在 ios 上使用吗?

    我正在尝试为一个 ios 项目实现摆姿势 场景 在运行时定义控制器类 https stackoverflow com questions 29424934 defining class of controller at run time 我
  • PHP、SQL通过php变量限制查询

    PHP代码定义变量sqlshowvalue sqlshowvalue 5 if isset POST showmore sqlshowvalue 5 所以我连接到我的数据库 然后当我使用上面刚刚定义的变量运行下面的 SQL 查询时 resu
  • 跟踪类实例中的状态

    我想创建一个具有某些内部状态 可能是加载 错误或成功 的类 我还想在类上有一些可以检查此类状态的方法 理想的API function f x LoadingError
  • 如何使用.net更改Word文档的字体大小

    我正在使用 C 和 Spire Doc 开发一个应用程序 它将 Word 文档保存为指定的格式 其中包括标题处的徽标以及指定的字体大小和样式 现在我可以使用 spire doc 在标题处粘贴徽标 但我无法更改font风格和size整个文件的
  • iPhone 表格单元格标签未对齐

    如同上一个问题 https stackoverflow com questions 1770872 text misalignment on tableview cells on iphone device 我的表格单元格中的文本对齐有问题
  • JWT 令牌与 AJAX、非 AJAX、JQuery

    我对在登录 提交和重定向期间管理 JWT 令牌感到有点沮丧 在开始之前 先介绍一下我的技术堆栈 以防万一 JQuery Html gt Node Js gt Java Restful Services gt MySQL 我的 java Re