什么样的情况下会出现跨域?
看协议、域名、端口号三个位置,只要有一处不同,就说明这个请求说跨域的。
要理解跨域问题,必须得知道什么是同源策略?
何谓同源:
- URL由协议、域名、端口和路径组成。
- 如果两个URL的协议、域名和端口相同,则表示他们同源。
同源策略:
- 浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。
- 从一个域上加载的脚本不允许访问另外一个域的文档属性。
举个例子:
- 比如一个恶意网站的页面通过iframe嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。
解决方案
解决方案有:
- 1、JSONP:前端用JSONP方式请求(jsonp不是Ajax请求)
- 2、CORS:后端写代码添加必要响应头,响应回来之后浏览器不会报错
- 3、代理转发:
参考文档:
https://www.pianshen.com/article/2669599599/
https://blog.csdn.net/JIAFury/article/details/119705893