问题和解决用 jQuery Ajax 发送请求,后端获取 session 为空
最近在做错题集的 web 开发课程设计,根据以往的经验前端和后端数据传输我大部分都在用 session。最近刚学习并运用了 Ajax 技术,当我像以前一样在后端更新 session 时,发现前端没有获取新的 session 数据,由此我打算认真来学习一下 session ,之前只会用,不知道背后的原理。
希望路过的大佬们可以指点一二,同时也希望给遇到同样困惑的小伙伴提供帮助🙂
为了了解session,我去哔哩哔哩上寻找了一些视频,在这个系列中收获挺多:终于有人将cookie,session,token鉴权讲明白了,老师一节课带你精通。第一个视频讲了HTTP协议和它的特点,第二个视频将了cookie的原理,学到这里,我在我的 javaweb 项目里尝试应用一下 cookie,因此又参考了以下几个视频
参考:
当我查找 session 的资料时,cookie 也冒出来了,通过学习以上几个视频,我知道了 session 中其实就用到了 cookie,怪不得讲 session 的时候离不开 cookie。
在这里概括一下 session 的原理:
- 当用户发出第一次请求的时候,后端中的 servlet 通过
request.getSession()
获取到 session,然后再在这个 session 中放入属性
此时,底层服务器做的事情是:
① 生成 32 位长度的随机字符串,然后创建一个 session 对象,然后以这个 32 位长度的字符串作为 key,以新创建的 HttpSession 对象作为 value,放到 session 列表(是一个 Map)中,
② 另外,还把 32 位字符串包装成了一个 cookie发送给客户端,这个 cookie 的 name 就是 JSessionID,value 就是这 32 位的字符串。 - 当浏览器接受到这个 cookie 之后,会把这个 cookie 保存到客户端的缓存中
- 当客户端再次发送请求的时候,会将这个 name 为 JSessionID 的 cookie 放到请求的头部信息中然后发送给服务器。
- 服务器接收到这个 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
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13