• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
学习记录
博客园    首页    新随笔    联系   管理    订阅  订阅
Vue+NodeJS的跨域请求Session不同

前端:vue+NodeJS

后端:springboot

前端通过vue-resource插件发送ajax请求

问题描述:

请求的时候后台接收到的session每次sessionid都不一样

如何解决:

在前端请求的位置加上withCredentials: true

this.$http.post(this.global.basePath + this.url, requestParam, {emulateJSON: true,withCredentials: true})
.then(function (res) {
//成功
}, function () {
//请求失败
})

后台controller加上Spring注解@CrossOrigin来支持跨域
import org.springframework.web.bind.annotation.CrossOrigin;

@CrossOrigin
public class CrossController{

}

XMLHttpRequest.withCredentials  属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCredentials属性是无效的。

此外,这个指示也会被用做响应中cookies 被忽视的标示。默认值是false。

如果在发送来自其他域的XMLHttpRequest请求之前,未设置withCredentials 为true,那么就不能为它自己的域设置cookie值。而通过设置withCredentials 为true获得的第三方cookies,将会依旧享受同源策略,因此不能被通过document.cookie或者从头部相应请求的脚本等访问。

posted on 2018-10-17 10:39  abspace  阅读(1993)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3