谁的问题
其实跨域问题的产生不是后端的问题,是浏览器做了限制。但只要type不是XHR请求,浏览器是不会去做限制的。
跨域条件
- 三个条件同时满足才会发生跨域问题
跨域的解决方法
浏览器解决跨域
- 启动浏览器的时候设置—disable-security参数关闭浏览器限制
JSONP解决跨域
- JSONP需要前后台都要做改动
- JSONP是一个非官方的协议,既然是协议那么就是约定俗成。
- JSONP需要前台发送请求的时候加上一个callback参数,后台判断如果有callback参数则返回一个javascprit对象,对象的参数即后台返回的json数据
跨域解决方向
被调用方解决
可以是被调用方的Nginx实现或者服务器Tomcat实现或者Spring框架实现
tomcat应用服务器配置
简单请求先执行后判断
预检命令:(非简单请求先判断后执行,浏览器会先发出一个OPTIONS)
带cookie的ajax跨域(cookie是被调用方的cookie)
通用方法:动态设置origin
通用方法:动态设置自定义header
Nginx配置
Spring配置
调用方解决