Angular2发送HTTP请求SpringBoot后台跨域问题解决

Angular通过http发送post请求至SpringBoot的Controller,由于同源策略的保护,遇到跨域问题:

• 源(origin)就是协议(http)、域名(localhost)和端口号(8080),若地址里面的协议、域名和端口号均相同则属于同源

解决方法:SpringBoot增加跨域请求支持

一:全局配置(推荐)

package com.example.example1.Default;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Created by BLIT on 2019/3/7.
 */
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //设置允许跨域的路径
        registry.addMapping("/**")
                //设置允许跨域请求的域名
                .allowedOrigins("*")  //也可以指定域名 .allowedOrigins("http://192.168.0.0:8080","http://192.168.0.1:8081")
                //是否允许证书 不再默认开启
                .allowCredentials(true)
                //设置允许的方法
                .allowedMethods("*")
                //跨域允许时间
                .maxAge(3600);
    }

}

二:局部配置

添加注解:@CrossOrigin(origins = {"http://localhost:4200","null"})
可以注解在单个方法上,也可以注解在整个controller上
原文地址:https://www.cnblogs.com/zxg-6/p/10488267.html