如何在 Strapi v5 中向 CORS 添加源?

问题描述 投票:0回答:1

我面临 CORS 错误(当请求的凭据模式为

'Access-Control-Allow-Origin'
时,响应中
'*'
标头的值不能是通配符
'include'
。)因为 origin 设置为
" * "
,为什么 Strapi忽略
config/middlewares.ts
中所做的CORS配置?即使使用自定义编写的 CORS 也行不通,因为 Strapi 最终会使用他自己的 CORS。

export default [
  "strapi::logger",
  "strapi::errors",
  "strapi::security",
{
    name: 'strapi::cors',
    config: {
      enabled: true,
      header: '*',
      origin: ['http://localhost:3000']
    }
  },
  "strapi::poweredBy",
  "strapi::query",
  "strapi::body",
  "strapi::session",
  "strapi::favicon",
  "strapi::public",
];

导致错误的原因是 httpConfig 中的

withCredentials
设置为
true

export const HTTP_CLIENT = axios.create({
    baseURL: ENV.API_URL,
    withCredentials: true,
});

如何设置原点以便我可以使用它? 谢谢你

reactjs next.js cors strapi httponly
1个回答
0
投票

对于我的网站组合,我正在使用您的堆栈、strapi + React。我没有任何有关 Strapi Coors 的配置,因为我不需要使用凭据请求 Strapi 资源,但出现您面临的问题是因为

withCredentials: true

在您的 Axios 配置中,需要 Access-Control-Allow-Origin 标头与发出请求的域完全匹配。不能设置为通配符 (*)。

也许您可以在 config/middlewares.ts 中更新 CORS 中间件配置:确保中间件设置为允许特定的来源和凭据。

export default [
  "strapi::logger",
  "strapi::errors",
  "strapi::security",
  {
    name: "strapi::cors",
    config: {
      enabled: true,
      origin: ["http://localhost:3000"], // Specify your origin
      methods: ["GET", "POST", "PUT", "DELETE"], // Allow required methods
      headers: ["Content-Type", "Authorization"], // Include required headers
      credentials: true, // Allow credentials
    },
  },
  "strapi::poweredBy",
  "strapi::query",
  "strapi::body",
  "strapi::session",
  "strapi::favicon",
  "strapi::public",
];

确保 Axios 配置正确:确保请求的来源与 Strapi 中指定的来源匹配。

使用浏览器 DevTools 或 Postman 等工具检查响应标头并确保它们包括:

访问控制允许来源 访问控制允许凭据

© www.soinside.com 2019 - 2024. All rights reserved.