Axios请求Node.js接口使用cors-anywhere返回403 Forbidden如何解决
问题原因
你遇到的403报错是因为使用的公开CORS代理服务本身有访问限制,禁止代理localhost这类本地服务地址,同时该公开实例有请求频次限制,所以才返回403。
你最初的跨域报错完全不需要借助第三方代理解决,你的后端已经安装了cors包,只是中间件配置顺序错误导致跨域配置不生效。
解决方案
1. 修正后端CORS中间件顺序
Express的中间件是按顺序执行的,你当前先挂载了路由,再配置CORS,会导致所有路由接口的请求都不会经过CORS中间件处理,自然会报跨域错误。
将index.js代码调整为如下:
const express = require('express'); const bodyparser = require('body-parser'); const routesHandler = require('./routes/handler.js') const cors = require('cors') const app = express(); app.use(bodyparser.urlencoded({extended:false})) app.use(bodyparser.json()) // 把cors配置移到路由挂载之前 app.use(cors()) app.use('/', routesHandler); const PORT = 4000; app.listen(PORT, () =>{ console.log('Server is running on port ' + PORT + '.') });
2. 前端移除代理前缀,直接请求本地接口
把Insert组件中的url修改为直接请求本地后端地址即可:
// 删掉cors代理前缀,直接请求本地接口 const url = "http://localhost:4000/insert"
验证操作
修改完成后重启Node.js后端服务,再提交前端表单,即可正常请求接口存入数据,不会再出现跨域报错和403问题。
内容的提问来源于stack exchange,提问作者user14677223
相关产品推荐
相关产品推荐

