• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

问题和解决用 jQuery Ajax 发送请求,后端获取 session 为空

武飞扬头像
诸葛思颖
帮助1

最近在做错题集的 web 开发课程设计,根据以往的经验前端和后端数据传输我大部分都在用 session。最近刚学习并运用了 Ajax 技术,当我像以前一样在后端更新 session 时,发现前端没有获取新的 session 数据,由此我打算认真来学习一下 session ,之前只会用,不知道背后的原理。


希望路过的大佬们可以指点一二,同时也希望给遇到同样困惑的小伙伴提供帮助🙂

为了了解session,我去哔哩哔哩上寻找了一些视频,在这个系列中收获挺多:终于有人将cookie,session,token鉴权讲明白了,老师一节课带你精通。第一个视频讲了HTTP协议和它的特点,第二个视频将了cookie的原理,学到这里,我在我的 javaweb 项目里尝试应用一下 cookie,因此又参考了以下几个视频

参考:

当我查找 session 的资料时,cookie 也冒出来了,通过学习以上几个视频,我知道了 session 中其实就用到了 cookie,怪不得讲 session 的时候离不开 cookie。

在这里概括一下 session 的原理:

  1. 当用户发出第一次请求的时候,后端中的 servlet 通过 request.getSession()获取到 session,然后再在这个 session 中放入属性
    此时,底层服务器做的事情是:
    ① 生成 32 位长度的随机字符串,然后创建一个 session 对象,然后以这个 32 位长度的字符串作为 key,以新创建的 HttpSession 对象作为 value,放到 session 列表(是一个 Map)中,
    ② 另外,还把 32 位字符串包装成了一个 cookie发送给客户端,这个 cookie 的 name 就是 JSessionID,value 就是这 32 位的字符串。
  2. 当浏览器接受到这个 cookie 之后,会把这个 cookie 保存到客户端的缓存中
  3. 当客户端再次发送请求的时候,会将这个 name 为 JSessionID 的 cookie 放到请求的头部信息中然后发送给服务器。
  4. 服务器接收到这个 cookie 之后,会拿着这个 32 位的字符串到 session 列表中进行查找,找到了 key 后就找到了对应的 value,也就时存放有域属性的 session,就可以从里面读数据了。

这就是 session 的工作原理。

接着就是不停的查资料找错误,最终终于找到了问题:url 中的 localhost 写成了 127.0.0.1 !

// ajax请求数据
        $.ajax({
			type: 'POST',
			url: "http://localhost:8080/CuoTiJi/saveCuoti",
			……
		})

同时,xhr 请求也带上了期待的 cookie:
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhcheieb
系列文章
更多 icon
同类精品
更多 icon
继续加载