开发项目时,前后端数据交互会产生跨域问题。这是保障数据数据安全,不然其他地方都能调用支付宝、银行的接口进行转账,支付了。
跨域产生的原因:
- 浏览器限制,同源策略:不在同一个局域网,协议、域名、端口不同
- XmlHttpRequest请求(json请求就不会产生跨域)
解决跨域可以从两个方面入手:
- 服务端允许跨域
- 调用方隐藏跨域请求
具体方法:
- 服务端添加允许跨域的代码,比如在filter里添加请求头的相关代码(response.setHeader()方法),常用
- 浏览器设置允许跨域,开发时可以,上线了不行
- 不用xhr请求,比如jsonp(缺点只有get请求)
- 中间服务器Nginx或apache配置代理请求
- springboot 注解@CrossOrigin