一、定义
跨域定义: 协议、域名、端口号有一个不一样就是跨域。
跨域(举例说明):跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的,XmlHttpRequest也不例外。
二、跨域方式
1、jsonp
使用jsonp跨域方式即是使用不受同源策略限制的标签进行跨域,流程为(以script标签为例):
- 新建script对象。
- 将要进行跨域的域名端口方法名以及回调函数写在script的src属性中(将回调函数函数名写在参数中)。
- 将script动态插入dom树中。
- 写回调函数。
- 后台查出数据,调用回调方法。
2、Cors
Cross-origion resource sharing即是跨域资源共享,是一种允许当前域(origin)的资源(比如html/js/web service)被其他域(origin)的脚本请求访问的机制。
当使用XMLHttpRequest发送请求时,浏览器如果发现违反了同源策略就会自动加上一个请求头:origin,后端在接受到请求后确定响应后会在Response Headers中加入一个属性:Access-Control-Allow-Origin,值就是发起请求的源地址(http://127.0.0.1:8888),浏览器得到响应会进行判断Access-Control-Allow-Origin的值是否和当前的地址相同,只有匹配成功后才进行响应处理。
现代浏览器中和移动端都支持CORS(除了opera mini),IE下需要8+。
跨域方式:
- 直接在ajax中进行访问。
- 在需要进行跨域访问的方法中进行判断,看请求头中是否包含“origion”。
- 如果包含,则拿到header中orgion的value(即请求域名地址),并给响应头"Access-Control-Allow-Origin"属性设置值。
3、nginx反向代理
此方法最为便利,前后端代码无需做特殊改变,只需在nginx.conf做配置,将本地请求地址转向真正实现请求的url地址。
跨域方式:
- 在nginx.conf文件中配置(源域名地址下访问/apis/***开头的url地址 会自动将请求转向http://127.0.0.1:14444/***)。
- ajax中url加入以/api/开头的地址。
4、后台跨域(包含代理方式)
前端向本地后台发出请求,后台再向api服务器请求数据,然后再将请求到的数据返回给前端。
跨域方式:
- 如需开启vpn则先开启vpn。
- 前台发请求。
- 后台使用httpClient类或者Proxy类进行请求。
- 后台将数据返回给前台。
参考:https://blog.csdn.net/github_37360787/article/details/54834789