SpringBoot2.5解決跨域問題2021年秋季新方法 SpringBoot+Vue前后端分離解決session不一致的問題
- 配置后端 (針對springboot2.5)直接在啟動類加一個配置
- 前端的遇到的坑(我是新手)總結一句話:用localhost和127.0.0.1不好用的話用局域網ip試試
配置后端 (針對springboot2.5)直接在啟動類加一個配置
我之前也一直看網上的做法,各種版本不一致,最后我準備放棄了,結果我吃了個飯想到直接去google搜了一下,然后真的發現了新的方法,只能說官方檔案還是nb,
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author jerryzhao
*/
@SpringBootApplication
public class SecondKillSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SecondKillSpringbootApplication.class, args);
}
// 就是這里,下面就這樣寫就行了,不用去加一個配置類
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowCredentials(true).allowedOriginPatterns("*");
}
};
}
}
這是Spring的檔案,他說大約15分鐘能看完,大概能看得懂,就主要盯著代碼,
https://spring.io/guides/gs/rest-service-cors/
前端的遇到的坑(我是新手)總結一句話:用localhost和127.0.0.1不好用的話用局域網ip試試
因為我一開始后端是跨域一直解決不了,然后通過了上面的方法解決了跨域,我就認為是前端的問題了,我前端就是加了那一條
import axios from "axios"和axios.defaults.withCredentials = true
但是發現sessionID還是不一樣,心態又崩了,我真的搜了個遍,axios檔案都看了也沒找到其他的方法,然后我自己寫了一個cookie發現確實能發的過去,

然后確實能發的過去,前端也能發的回去,但是那個SESSION就是發不回去,
我的情況是:
(1)localhost后端直接不需要配跨域直接可以跨域,sessionId是否不一致我當時還沒解決,
(2)現在用的是127.0.0.1,然后就遇到 cookie中SESSION被無視,自定義的cookie就正常,
(3)然后我換了局域網的IP,我在我爸的Wi-Fi下是192.168.1.101,然后我發現我的vue竟然容納了SESSION,然后后端接收到的sessionID驚人的一致了,

大家不需要管其他的不一樣的,那些是一些實驗,
廢話:
之前做的專案使用shiro的token做的,現在學會了個更基礎一點的,
就是覺得別輕易放棄吧,我本來用的shiro,是被shiro的攔截器給堵死了跨域請求,然后在shiro的攔截器上配置好了,但是sessionId仍然不一樣,我就以為是shiro的問題,然后今天重新找了個不用cookie的,結果直接跨域都不好用了,去了官網找的解決方案,然后SESSION又發不過去,最后換了個IP就好了,差點就放棄了,強迫癥又回來解決了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/296866.html
標籤:java
