前端: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或者从头部相应请求的脚本等访问。