如何解决Node.js中“No 'Access-Control-Allow-Origin'”CORS报错
问题根因
你遇到的CORS报错和后端配置的CORS策略完全无关。错误提示已经明确说明,缺少Access-Control-Allow-Origin头的资源是Facebook的OAuth授权页,不是你的后端接口。
OAuth2.0的授权码流程本身就不允许用AJAX/axios这类XMLHttpRequest的方式发起授权请求,Facebook的授权页面本身就没有配置允许第三方站点跨域访问的响应头。
修复方案
- 修改后端接口请求方式
把/getAccessCode接口的请求方式从POST改成GET,获取授权页的请求本身就应该用GET方式。
// 后端代码修改 router.route('/getAccessCode').get((request, response)=> { // 原有拼接参数、重定向逻辑保持不变 })
- 修改前端调用方式
不要用axios发送请求,直接让浏览器跳转或者新开窗口访问这个后端接口地址即可,页面导航行为不受CORS规则限制:
// 前端代码替换原有axios.post逻辑 // 方式1:当前页面跳转 window.location.href = 'http://localhost:8000/getAccessCode' // 方式2:弹窗打开(适配你配置的display=popup参数) window.open('http://localhost:8000/getAccessCode', 'fbAuth', 'width=600,height=600')
- 补充验证点
确认你Facebook开发者后台的OAuth配置里,已经把http://localhost:3000加入了合法重定向URI列表,否则后续授权完成后回调会失败。
内容的提问来源于stack exchange,提问作者SA Master
相关产品推荐
相关产品推荐

