GraphCDN请求无需认证的GraphQL接口返回认证错误怎么解决?
问题排查与解决方法
可能的配置错误及对应修复方案
- 源站地址配置错误
你返回的报错是GitHub GraphQL API的标准鉴权错误,首先检查你的GraphCDN服务配置的源站地址,确认是否误填为GitHub的GraphQL端点,而非你自己的业务源站地址https://***.com/graphql,该类配置失误会直接导致请求GraphCDN时实际转发到GitHub接口触发鉴权错误,修正为正确的源站地址即可解决。 - 全局鉴权规则未配置公开接口例外
排除源站地址错误的情况后,检查你的graphcdn.yml配置文件的rules字段,是否设置了全局requireAuth: true规则,没有给无需鉴权的公开Query/字段配置例外。你需要调整规则优先级,给公开操作单独配置豁免规则,参考配置如下:
rules: # 公开查询豁免规则,优先级高于全局规则 - match: "Query.你的公开字段名称" requireAuth: false # 其余私有接口全局鉴权规则 - match: "*" requireAuth: true
- 请求头透传规则异常
检查你配置的passThroughHeaders或removeRequestHeaders规则,是否误删除了源站识别匿名请求所需的头信息,或是错误添加了鉴权相关的强制头,导致源站对公开请求误判为需要认证,调整头透传规则保留源站需要的相关字段即可。
验证方法
配置修改推送到GraphCDN生效后,可通过curl发起测试请求验证:curl 'https://你的服务名.graphcdn.app/' -H 'Content-Type: application/json' -d '{"query":"query { 测试用公开字段 }"}'
如果返回结果和直连源站的返回一致,说明配置修复成功。
内容的提问来源于stack exchange,提问作者mrateb
相关产品推荐
相关产品推荐

