自托管cors-anywhere服务从Vercel站点访问时报403错误求助
问题原因及修复方案
核心原因1:origin白名单配置不匹配
你在originWhitelist中配置的Vercel域名是带末尾斜杠的https://btg-code-challenge.vercel.app/,但实际浏览器发起请求时携带的Origin请求头是不带末尾斜杠的https://btg-code-challenge.vercel.app,二者字符串不一致导致白名单校验失败,返回403。
核心原因2:必填请求头缺失
你配置了requireHeader: ["origin", "x-requested-with"],要求请求必须同时携带origin和x-requested-with两个头,但从你提供的curl请求可以看到,请求里没有携带x-requested-with头,也会触发校验失败返回403。
修复步骤
- 第一步:修改
originWhitelist中的Vercel域名,去掉末尾的斜杠,改成"https://btg-code-challenge.vercel.app" - 第二步:二选一处理必填头配置:
- 方案A:如果确实需要强校验,就在前端发起请求时主动添加
x-requested-with: XMLHttpRequest请求头 - 方案B:如果不需要该校验,直接从
requireHeader数组中删掉"x-requested-with"即可
- 方案A:如果确实需要强校验,就在前端发起请求时主动添加
- 第三步:重新部署你的cors-anywhere服务,生效配置即可解决403问题。
内容的提问来源于stack exchange,提问作者Sean Liu
相关产品推荐
相关产品推荐

