搭建代理服务器解决接口请求跨域问题

前言:请求跨域是什么?
当有时候前端向后端的一个接口发送请求,会出现如下图报错
在这里插入图片描述
出现上图错误原因是因为当前ajax请求的接口与网页打开的地址不同源,产生了跨域问题。

跨域带来的问题:浏览器基于安全角度考虑,不允许使用ajax访问跨域资源

什么是同源?同源就是请求网络请求协议一样,域名一样,端口一样就是同源
所以下面就是解决不同源问题的请求

在nodejs中有两种解决方法
1、利用nodejs的的第三方模块导入直接调用cors()方法或者在服务器请求响应头添加’Access-Control-Allow-Origin’, ‘*’,语句,能都够解决资源共享的问题

优点:前端不需要过多处理资源共享的代码,可以全部交给后端处理

在这里插入图片描述

2、利用jsonp格式

原理:是用script标签的src属性向后台发起接口请求,把返回来的值作为一个js处理
应用场景:只能适用于get请求接口方式,因为get请求方式把参数值拼接到url地址头上
优点:前端不需要做过多处理,在后端解决跨域问题
在这里插入图片描述

3、利用ajax封装好的jsonp代码来解决跨域问题

优点:ajax封装好的jsonp代码底层代码如(2)上诉代码,只不过ajax每次创建一个script标签会把之前得script给覆盖掉
在这里插入图片描述

4、用代理服务器解决接口跨域问题

什么是代理服务器?当我们请求访问某个页面或者接口的时候,被访问的服务器有特定的权限,不允许直接被访问,此时我们就需要借助代理服务器帮助我访问到相应数据
如何搭建代理服务器,这就是一个问题?接下来我一步一步慢慢梳理
1、首先要自己搭建一个服务器
2、在自己搭建的服务器中调用服务器方法app.use(设置请求接口, createProxyMiddleware({ target: ‘http://japi.juhe.cn/qqevaluate’, changeOrigin: true })【createProxyMiddleware是第三方模块的方法,里面第一个参数是目标的服务器,第二个参数是固定值设置】
3、到这代理服务器基本搭建完毕,直接调用即可,但此时调用又会出来报跨域问题,为什么尼?这次出现跨域问题是因为打开的地址与本地地址不同源,所有我们还要把自己本地的共享资源能力开放:用到中间件的响应内容的response.setHeader()的方法
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值