我面临 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,
});
如何设置原点以便我可以使用它? 谢谢你
对于我的网站组合,我正在使用您的堆栈、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 等工具检查响应标头并确保它们包括:
访问控制允许来源 访问控制允许凭据