要做一个登录验证的功能,采用前后端分离的方式,后端使用.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无用
悬赏问题
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥170 如图所示配置eNSP
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
- ¥15 stata安慰剂检验作图但是真实值不出现在图上