要做一个登录验证的功能,采用前后端分离的方式,后端使用.Net开发的WebAPI, 在登录的时候调用API的登录接口,成功后生成一个token,返回给前端,API把token保存在session中。在调用其它方法时,前端把token传到API,API从session
获取到token和前端传来的比对,但是获取不到session中的token,发现登录的时候sessionID和调用其它接口时的sessionID不一样。API的SupportsCredentials也设置了true,ajax中设置了widthCredentials为true,问题依据。静候指点迷津!
ajax跨域访问Web API SessionId不一致问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-showbo 2021-09-28 20:05关注
session对应的cookie没有设置成功,被拦截了,鼠标移动到感叹号上会有原因。
就算能设置成功,由于samesite是lax,也不会发送cookie值。以下截图来源:
Cookie 的 SameSite 属性 - 阮一峰的网络日志 http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html将ajax请求接口改为https协议,设置SameSite=None; Secure
asp.net_sessionid是core自动生成,要改下配置,参考下面的文章
asp.net - ASP.NET_SessionId cookie value is alway Lax in the SameSite - Stack Overflow I have an ASP.NET Web Application and the application need to open in an iframe in another site i.e. it should support cross-site cookies. I want to set SameSite=None; Secure in the web application... https://stackoverflow.com/questions/59953529/asp-net-sessionid-cookie-value-is-alway-lax-in-the-samesite
不过建议是将asp.net_sessionid的值当做内容输出,ajax获取到值后保存到localStorage中,然后客户端ajax发送请求时将身份信息放在自定义头中发送出去或者当做数据发送给服务器端,服务器端从请求头或者信息体中获取验证信息
有帮助或启发麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥20 c语言写的8051单片机存储器mt29的模块程序
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
- ¥250 paddleocr带斜线的0很容易识别成9
- ¥15 电子档案元素采集(tiff及PDF扫描图片)
- ¥15 flink-sql-connector-rabbitmq使用
- ¥15 zynq7015,PCIE读写延时偏大