跨域问题---前端解决方案

跨域问题—前端解决方案(简洁版)

** 跨域:违背了同源策略(请求头 / 域名 / 端口号不一致)**

常见业务场景

1、本地环境:前后端ip端口号不一致
2、线上环境:api请求其它网址内容

场景1解决方案:

1、nginx反向代理
1、打开目录:/usr/local/nginx/conf/nginx.conf
2、修改配置:
server: {
listen 80;
server_name 127.0.0.1;
location / { // 当检测到 / 请求时,就会请求代理地址
proxy_pass http://127.0.0.1:8080; //这里是代理(目标)服务器地址
}
}
3、刷新并重启
nginx -t
nginx -s reload

2、vue 配置跨域
1、找到并打开vue.config.js
2、修改配置:
proxyTable: { // 配置跨域
‘/api’:{ //拦截/api 开头的请求
target:http://xxx.xxx.xxx, // 目标地址
changeOrigin:true, // 允许跨域
pathRewrite:{
‘^/api’ : ‘’ // 去掉api
}
}
3、修改request.js 的请求地址为 /api。

场景2解决方案:

线上的跨域一般都是后台进行配置,添加请求头,就不会存在跨域的情况;
但是如果请求其它网站api,例如线上环境访问本地环境,就会有问题;
浏览器中chrome会就行拦截,像火狐、Edge、QQ浏览器都不会拦截;

1、针对线上chrome跨域拦截
1、浏览器地址栏输入:chrome://flags/#block-insecure-private-network-requests
2、找到Block insecure private network requests. 选择Enabled。
在这里插入图片描述
2、通过反向代理的方式
1、打开目录:/usr/local/nginx/conf/nginx.conf
2、修改配置:
server: {
listen 80;
server_name 127.0.0.1;
root /data/wwwroot/项目名称/dist //项目代码目录
index index.html index.php // 启动文件
location /api { // 当检测到 / 请求时,就会请求代理地址
proxy_pass http://127.0.0.1:8080; //这里是代理(目标)服务器地址
}
}
3、刷新并重启
nginx -t
nginx -s reload

4、修改request.js 的请求地址为 /api。

*************end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值