1. 程式人生 > >【筆記】總結Springboot和Vue前後端分離的跨域問題

【筆記】總結Springboot和Vue前後端分離的跨域問題

跨域一直是個很玄學的問題,SSM的時候又得前後端一起配置,sb的時候又不用。

  • 前端
    axios普通get請求
submitForm() {
    var v=this;
    this.$axios({
        method: 'get',
        url: api.base_url+'/user/login',
    }).then(function(res){
        var json = res.data;
        console.log(json);
        v.$store.commit('ADD_COUNT', json.data.token);
        v.$message('登入成功');
    }).catch(function(err){
        v.$message('密碼或使用者名稱錯誤');
    })
}
  • 後端
    加一個配置類
package com.zxc.ticketsys.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.concurrent.Executors;

/**
 * 跨域請求支援
 */
@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedHeaders("*")
                .allowedMethods("*")
                .allowedOrigins("*");
    }

    @Override
    protected void configureAsyncSupport(AsyncSupportConfigurer configurer){
        configurer.setTaskExecutor(new ConcurrentTaskExecutor(Executors.newFixedThreadPool(3)));
        configurer.setDefaultTimeout(30000);
    }
}