已经解决了
上代码:
vue:
hello worldhello world
用户名:
提交
axios.defaults.baseURL = 'http://localhost:8066'
axios.defaults.withCredentials=true;
new Vue({
el: "#app",
data() {
return {
username: ''
}
},
methods: {
submit() {
axios.post('login', {
username: this.username
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
}
}
})
后台java:
跨域配置:
@Configuration
public class CrossConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//设置允许跨域的路径
registry.addMapping("/**")
//设置允许跨域请求的域名
.allowedOrigins("*")
//是否允许证书 不再默认开启
.allowCredentials(true)
//设置允许的方法
.allowedMethods("*")
//跨域允许时间
.maxAge(3600);
}
}
cookieutil:
public class CookieUtils {
public static String getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals(cookieName)) {
return cookie.getValue();
}
}
}
return null;
}
public static void writeCookie(HttpServletResponse response, String cookieName, String value) {
Cookie cookie = new Cookie(cookieName, value);
cookie.setPath("/");
cookie.setMaxAge(5 * 60);
response.addCookie(cookie);
}
}
controller:
@RestController
public class LoginController {
final String TOKENX = "1234";
@PostMapping("login")
public String queryPoolList(@RequestBody User user, HttpServletResponse response,
@CookieValue(value = "token", required = false) String token) {
if (token == null) {
CookieUtils.writeCookie(response, "token", TOKENX);
} else {
System.out.println(token);
}
//返回前台
return "成功";
}
}