springboot 解决 cors 问题(跨域问题)

有两种方式,方式一对我们的老项目起作用,方式二不起作用,知道原因的朋友评论指教一下哈

方式一:配置filter

package com.tomtop.big.data.crawler.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;

/**
 * 解决json跨域的过滤器
 * @author Think
 *
 */
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization");
        if(request.getMethod().equals(HttpMethod.OPTIONS.name())){
            response.setStatus(HttpStatus.NO_CONTENT.value());
        }else{
            chain.doFilter(req, res);
        }
    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}
}

方式二:创建CORS配置类

下面是全局配置:

import org.springframework.web.servlet.config.annotation.CorsRegistry;  
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  
  
@Configuration  
public class WebMvcConfig extends WebMvcConfigurerAdapter {

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

下面是Controller局部配置

@CrossOrigin(origins = "http://localhost:8080")
    @RequestMapping(value = "/get")
    public HashMap get(@RequestParam String name) {
        HashMap map = new HashMap();
        map.put("title", "hello world");
        map.put("name", name);
        return map;
    }

你可能感兴趣的:(springboot 解决 cors 问题(跨域问题))