一、背景同源策略
同源策略可以理解为浏览器的一种安全机制,浏览器只允许与本域下的接口进行交互。不同源的客户端在没有明确授权的情况下,不能读写服务端的资源。
什么是不同源呢
- 不同的协议 例:http/https
- 不同的域名
- 不同的端口
- 不同的二级域名 例:http://a.baidu.com、http://b.baidu.com(不然哪来的降域呢)
补充点
在出现跨域问题时,浏览器究竟在哪一步进行了拦截?客户端请求时?服务器不做出响应?还是服务器响应后浏览器拒绝的响应??
![85a76b15e7e27bd4076be5f706a170af.png](https://i-blog.csdnimg.cn/blog_migrate/000223bd5d85aa51c4204252909045b8.jpeg)
![642c3b236e6a52a6029763c8d3f3fc56.png](https://i-blog.csdnimg.cn/blog_migrate/deef35e0f03c197f7975d17842ec2cb0.jpeg)
测试发现,在客户端和服务端不同源的情况下,服务端其实是有响应的,在此时是浏览器的同源策略拒绝了响应,认为这样不安全。
二、解决跨域问题1. JSONP(JSON with Padding)
- 原理: 在HTML中用script标签在加载其他域下的jsÿ