You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何允许向/graphql端点发送GET请求而非POST并解决访问禁止问题

解决urql发送APQ GET请求到Strapi时的Forbidden错误

可能的原因及修复步骤

1. 检查Strapi的CORS配置

Strapi默认可能仅允许POST请求访问GraphQL端点,需在config/middlewares.js中更新CORS设置,允许GET方法并包含APQ相关请求头:

module.exports = [
  // ...其他中间件
  {
    name: 'strapi::cors',
    config: {
      origin: ['你的前端域名', 'Cloudfront域名'],
      methods: ['GET', 'POST', 'OPTIONS'],
      allowedHeaders: ['Content-Type', 'apollo-require-preflight'],
      credentials: true,
      maxAge: 31536000,
    },
  },
  // ...其他中间件
];

修改后重启Strapi服务。

2. 开启Strapi APQ对GET请求的支持

默认Strapi的APQ插件仅处理POST请求,需在config/plugins.js中配置Apollo Server允许GET请求的APQ:

module.exports = ({ env }) => ({
  // ...其他插件配置
  graphql: {
    config: {
      endpoint: '/graphql',
      apolloServer: {
        persistedQueries: {
          allowGet: true, // 关键配置:启用GET请求的APQ支持
        },
        // ...其他Apollo相关配置
      },
    },
  },
});

3. 验证urql的GET请求参数格式

urql发送APQ GET请求时,需确保哈希参数名为sha256Hash(Apollo APQ标准参数名),同时哈希生成逻辑与Strapi端一致:

import { createClient, cacheExchange, fetchExchange } from '@urql/core';
import crypto from 'crypto';

const client = createClient({
  url: '你的Strapi GraphQL端点',
  exchanges: [cacheExchange, fetchExchange],
  fetchOptions: () => ({ method: 'GET' }),
  persistedQueries: {
    generateHash: (query) => crypto.createHash('sha256').update(query).digest('hex'),
  },
});

发送请求时,URL需包含sha256Hash参数(如有变量需追加variables参数),示例:
https://your-strapi-domain/graphql?sha256Hash=abc123...&variables={"id":1}

4. 检查Strapi角色权限

进入Strapi后台,依次打开Settings > Users & Permissions Plugin > Roles,找到前端使用的角色(如Public):

  • 找到graphql权限组
  • 勾选对应查询(如about)的访问权限,确保允许GET请求

5. 排查Cloudfront配置

若请求经过Cloudfront,需确认:

  • Cloudfront已将sha256Hash、variables参数转发至Strapi源站
  • Cloudfront未修改请求方法或添加导致Strapi拒绝的额外请求头
  • 缓存策略允许缓存带上述参数的GET请求

测试验证

先用curl直接访问Strapi端点(跳过Cloudfront),确认请求是否正常:

curl "https://your-strapi-domain/graphql?sha256Hash=你的查询哈希值"

若直接访问正常,问题出在Cloudfront配置;若仍返回Forbidden,重新检查前4步的配置。

内容的提问来源于stack exchange,提问作者Muhammad Osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:05:36