如何解决跨域问题

跨域是由于http安全协议对跨域的数据不信任造成数据读取失败的现象  ,两个服务器彼此不太信任。同班同学找你借钱,彼此认识,都相互信任,借给他。默认人找你,不写任,不借。---如果第三人说,它是我哥们,人还可以,你借给它吧,经过了一番介绍,ok,信任了,借给它吧

  今天做本地开发测试,遇到了跨域问题。记录一下我的解决方案吧

     1.网上说,可以前端配置,也可以后端配置。一般来讲,后端配置了允许跨域,就可以解决跨域问题。

response的响应头里面加上acao----即access-control-allow-origin

        第一种方案:response配置请求头的来源

        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST,GET");

 

我的代码:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
	private UserService userService;
	@RequestMapping("/findAll")
	public List<User> findAll(HttpServletResponse response){
		response.setHeader("Access-Control-Allow-Origin", "*");
		response.setHeader("Access-Control-Allow-Methods", "POST,GET");
		return userService.findAll();
	}
}

这种方法只能单个配置,对于原生的ajax请求 能够解决跨域,但是对于axios发起的请求,仍然会报跨域问题。

2.第二种方案:全局配置,通过在springmvc.xml中加上

// 简单配置,未配置的均使用默认值,就是全面放开
 <mvc:cors> <mvc:mapping path="/**" /> </mvc:cors> 
​​​​​​​
// 这是一个全量配置
 <mvc:cors>
   <mvc:mapping path="/api/**" allowed-origins="http://domain1.com, http://domain2.com" allowed-methods="GET, PUT" allowed-headers="header1, header2, header3" exposed-headers="header1, header2" allow-credentials="false" max-age="123" />
   <mvc:mapping path="/resources/**" allowed-origins="http://domain1.com" /> 
</mvc:cors>

则所有的请求都允许跨域访问。(注意:spring的版本要高于4.2,我的是5.0.2,低版本可能不生效)。

也可以通过注解进行单个配置

@CrossOrigin(maxAge = 3600)  
@RestController  
@RequestMapping("/account")  
public class AccountController {  
  
    @CrossOrigin("http://domain2.com")  
    @RequestMapping("/{id}")  
    public Account retrieve(@PathVariable Long id) {  
        // ...  
    }  
} 

最后:实际发布到服务器上,要删除以上配置,提高应用的安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值