1.什么是跨域
跨域 就是跨域名来访问的数据
域名: www.baidu.com(ip 192.168.0.1) www.taobao.com(ip 192.168.0.2) -- 属于跨域
localhost:8080 --- >localhost:80 --(属于跨域)
www.wenku.baidu.com www.tieba.baidu.com --二级域名 -- 跨域
192.168.0.3 192.168.0.4
2. 跨域不一定存在跨域问题
什么情况下存在跨域问题:
<a href="www.jd.com">
跨域问题: 浏览器 针对ajax请求的时候,如果不同的服务,存在跨域
浏览器机制: 同源策略拦截跨域的访问
3 怎么解决跨域问题? --面试题
(1) jsonp方式 --json变种
localhost/department/list -- > <scprit src="/localhost/department/list">
缺点:
需要服务支持
只能发起GET**请求**
(2) nginx 反向代理 --现在不用
以前:![image-20200103102359784](笔记.assets/image-20200103102359784.png)
nginx方案:
![image-20200103102429949](笔记.assets/image-20200103102429949.png)
缺点:需要安装nginx才能使用
(3)方案3 -- 服务器允许cors这些请求
#### 什么是cors
**同源**(相同协议,相同域名,相同端口)
cors: 一个w3c标准 跨域资源共享"(Cross-origin resource sharing)
服务器怎么允许这些 / get/post/delete/put/options /patch
解决方案:
(1)写一个配置类
(2)spring通过注解支持
CrossOrigin 注意: 4.2版本以后支持
@Controller
@RequestMapping("/department")
@CrossOrigin //解决跨域问题
public class DepartmentController {
}