前端跨域问题几种方案(如果有错请指出来)

跨域问题
本页面url和请求url两者之间,协议、端口、域名只要有一种不同就会出现跨域问题。跨域问题本质是get请求可以发出去,服务端也可以正常响应,但是被浏览器当作不安全操作拦截了(拦截响应,阻止用户读取另一个域名下的数据),服务器之间没有跨域请求这个说法。
解决方案如下:
1.jsonp
带src的标签可以加载跨域资源,不受限制。经典做法是在script标签中的src中放跨域url,加载资源,在本页面中设置回调函数,取到资源。缺点是只支持get请求。
2.cors
和前端无关,重点是后端设置允许哪些url可以进行跨域操作,用户不需要做额外操作。发出cors请求,浏览器自动添加origin在http头中,服务器根据origin信息判断是否在允许范围内,在的话就可以进行跨域,不在的话浏览器报错。
3.vue代理(proxy)
vue 中的 proxy 就是利用了 服务器之间无跨域问题。配置vue.config.js文件,改写url,使它和要访问的url同源。
4.Node中间件代理(两次跨域)
设置代理服务器
(1)客户端给代理服务器发送请求
(2)代理服务器向跨域服务器转发请求
(3)跨域服务器响应
(4)代理服务转发响应给客户端
5.nginx反向代理
用户输入url,我nginx配置你的url指向某个服务器就行了,反向代理代理的是服务器,分发浏览器请求给服务器。
优点:1对外隐藏真正服务器的地址,2分发请求减轻了服务器压力

反向代理和正向代理区别(正向代理代表:node中间件代理,vue代理)
1.正向代理用户需要知道跨域服务器端口和地址,反向代理用户不需要知道
2.正向代理服务器不知道谁在访问,反向代理用户不知道访问的是谁
用两幅图更形象的理解正向和反向代理,
来源:https://www.zhihu.com/question/24723688
我有疑惑:正向代理和反向代理中,代理服务器的url怎么设置,不得考虑跨域问题吗。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值