1. 程式人生 > >vue+springboot2.0前後端分離專案傳輸cookie,獲取cookie,返回cookie

vue+springboot2.0前後端分離專案傳輸cookie,獲取cookie,返回cookie

上程式碼:

前端vue:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
    <title>hello world</title>

</head>
<body>
<div id="app">
    <h1>hello world</h1>
    使用者名稱: <input type="text" v-model="username">
    <button @click="submit">提交</button>
</div>
</body>

<script src="../static/js/vue.js"></script>
<script src="../static/js/axios.min.js"></script>
<script>
    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);
                });
            }
        }
    })
</script>
</html>

後臺java

跨域配置類:

@Configuration
public class CrossConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //設定允許跨域的路徑
        registry.addMapping("/**")
                //設定允許跨域請求的域名
                .allowedOrigins("*")
                //是否允許證書 不再預設開啟
                .allowCredentials(true)
                //設定允許的方法
                .allowedMethods("*")
                //跨域允許時間
                .maxAge(3600);
    }
}

cookie工具類

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 "成功";
    }
}

參考:

已經解決了

https://blog.csdn.net/heatdeath/article/details/79260053

https://blog.csdn.net/weixin_40648117/article/details/79066550