springboot接口跨域

最近写了一些springboot接口

postman测试通过之后当然就是实战测试。

然后就是经常遇到的一个问题:

之前写servlet接口时是写了一个跨域过滤器 Filter:

package 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.HttpServletResponse;


public class filter implements Filter{
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletResponse response = (HttpServletResponse) res;
		response.setHeader("Access-Control-Allow-Origin", "*");
		response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
		response.setHeader("Access-Control-Max-Age", "3600");
		response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
		response.setHeader("Access-Control-Allow-Credentials", "true");
		chain.doFilter(req, res);
	}
 
	public void init(FilterConfig filterConfig) {}
 
	public void destroy() {}

}

然后web.xml配置一下:

  <filter>
	  <filter-name>filter</filter-name>
	  <filter-class>filter.filter</filter-class>
  </filter>
  <filter-mapping>
	  <filter-name>filter</filter-name>
	  <url-pattern>/*</url-pattern>
  </filter-mapping>

但是在springboot中,直接一个注解 @CrossOrigin 就可以跨域访问了( 简单粗暴 ):

但要注意使用要求

  • jdk1.8+
  • Spring4.2+
package com.xzw.test.controllers;

import com.xzw.test.models.Users;
import com.xzw.test.testUtils.Result;
import com.xzw.test.testUtils.ResultUtil;
import com.xzw.test.viewModels.UsersRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin
public class UserController {

    @Autowired
    private UsersRepository repository;

    @GetMapping(value = "/getUsersList")
    public Result getAllUsers() {
        try {
            return ResultUtil.success(1,"请求成功",repository.findAll());
        }
        catch (Exception e){
            return ResultUtil.error(-1,"请求失败:"+e.getMessage());
        }
    }

    @PostMapping(value = "/addUser")
    public Result addOne(@RequestParam("userName") String userName,
                         @RequestParam("userPwd") String userPwd) {
        try{
            Users user = new Users(userName, userPwd);
            return ResultUtil.success(1,"添加成功",repository.save(user));
        }
        catch (Exception e){
            return ResultUtil.error(-1,"添加失败:"+e.getMessage());
        }
    }
}

附测试截图:

打印结果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值