java中常用的几种跨域方式

默认情况下服务端是不允许ajax跨域访问的,需要在response头设置相应的跨域权限

在后台,常用的配置跨域有两种方式

1、配置Filter过滤器(拦截器也可以):

@WebFilter("/test")
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        //设置允许跨域访问的服务域名,*号表示允许所有域访问
        //resp.setHeader("Access-Control-Allow-Origin", "www.baidu.com");
        response.setHeader("Access-Control-Allow-Origin", "*");
        //设置允许跨域的请求方法
        response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE");
        //放行
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

2、使用@CorsOrigin()注解:

@CorsOrigin()注解可以标注在类上,也可以标注在方法上。在controller类中,在类上标注@CorsOrigin注解表示当前类下的所有方法都支持跨域访问,如果标注在方法上,表示只有当前方法支持跨域访问。这个注解有origins和methods两个属性,origins属性表示允许跨域访问的服务域名,*号表示所有域名都支持,methods是一个RequestMethod对象数组,表示允许跨域的请求方法。

@RestController
@CrossOrigin(origins = "*", methods = {RequestMethod.GET, RequestMethod.POST})
public class TestController {

    @GetMapping("/hello")
    public String hello(){
        return "hello spring";
    }
}

 

posted @ 2020-05-26 20:00  张财华  阅读(3034)  评论(1编辑  收藏  举报