尝试通过Stripe授权码获取账户详情时OAuth Token接口被CORS策略拦截
Stripe Connect 授权码换取账户详情的CORS报错修复
报错根因
- 该跨域拦截属于设计层面的必然结果:Stripe 提供的
https://connect.stripe.com/oauth/token端点不支持浏览器端直接发起跨域调用,不会为这类请求返回CORS校验要求的Access-Control-Allow-Origin响应头,不存在修改前端配置就能绕过拦截的可能 - 现有代码存在无效配置:
Access-Control-Allow-Credentials是服务端返回给浏览器的响应头字段,前端在请求头中手动添加该字段没有任何实际作用 - 浏览器提示的
no-cors方案完全不适用:开启该模式后,浏览器会将Stripe返回的响应当作不透明内容,前端无法读取、解析响应里的JSON数据,根本达不到获取关联账户详情的业务目的
正确实现方式
- 所有涉及Stripe密钥、OAuth token换取的操作,必须全部迁移到自身业务的后端服务完成,绝对不能将Stripe密钥硬编码在前端代码中
- 前端仅保留OAuth授权跳转逻辑,拿到一次性临时授权码
code后,将该参数传给自身后端接口即可,不再直接请求Stripe的OAuth端点 - 后端完成对接流程:接收前端传递的授权码后,由后端服务向Stripe的
oauth/token接口发起服务端到服务端的请求,按需传入code、client_secret、grant_type=authorization_code参数,拿到关联账户授权信息后,再将业务需要的字段返回给前端 - 调整后整个链路不存在前端直连第三方域名的跨域问题,同时也能避免Stripe密钥泄露的安全风险
内容的提问来源于stack exchange,提问作者RahulD
相关产品推荐
相关产品推荐

