前言:

        现在前端项目开发过程中,大部分的项目都是前后端分离的(就后端开发用 如:PHP、Java、Go 等语言 + 数据库进行开发,只提供API接口数据,而前端开发用 如:Vue.js React.js Angular.js 框架进行开发,前后端业务交互用Ajax请求API交互数据。

        在项目开发初期,一般都是前端开发人员都先在本地进行开发(就是还没打包构建时),所以前后端进行联调的时候就会出现一个常见的问题,那就是Ajax请求跨域问题。

        其实前端和后端是不存在跨域的,而是前端在通过浏览器请求访问时,浏览器出于安全考虑做了一个叫做 "同源策略" 规范,浏览器请求时遇到3不同(协议不同、主机不同、端口不同)的URL,就拒绝响应!

关于浏览器同源策略,MDN是这样解释的:

        同源策略:是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

        有同源策略固然是好事,但是在开发过程中就给我们开发人员带来了些不便了,这里以Google Chrome浏览器:版本 87.0.4280.88(正式版本,64 位)为例给小伙伴们分享一下,Web前端在本地开发和后端联调时,使用Chrome浏览器解决API跨域问题。

本地开发跨域解决方案:

        就是通过设置Chrome浏览器的 disable-web-security, 关闭浏览器安全策略,实现跨域访问后端接口,尤其是在还没有开发服务器的情况下,前端开发在局域网内和后端开发小伙伴联调Api接口时,这个解决方案相当有用!

1、在原有的Chrome浏览器图标上再创建一个新的Chrome浏览器快捷方式,以便区分跨域和非跨域浏览器。

java API怎么提供前端调用 前端调用api接口_API跨域

2、在新创建的Chrome浏览器快捷方式上做如下图所示配置。

注:Microsoft Edge浏览器的配置也是相同的哦,这里就以Chrome浏览器为例!

请看下图:

--disable-web-security --user-data-dir="C:\DevChrome"

// 注 C:\DevChrome 是自己指定的盘符和目录名

注:C:\DevChrome 是可以自己定义的盘符和目录,可以定义到其他如:D:\DevEdge

java API怎么提供前端调用 前端调用api接口_前端跨域_02

3、点击新创建的Chrome浏览器图示,进入如下图界面。

java API怎么提供前端调用 前端调用api接口_API跨域_03

如上图所示,此时在这个浏览器的地址栏中输入开发的项目地址如: http://localhost:3000,或者直接输入请求的后端API地址时,就不会跨域问题啦。