如何解决 Strapi 生产构建中的 CORS 策略问题?

bal*_*ear 6 nginx strapi

现在有没有人如何修复 Strapi 后端的 CORS 错误?我收到一条类似的消息,如下所示。我用 example.com 替换了我的域:

访问从源 ' https://blog.strapi.io/ghost/api/v0.1/posts/?client_id=ghost-frontend&client_secret=1f230799b4ec&limit=2 ' http://backend.example.com:1337 获取' 已被 CORS 策略阻止:对 ' http://backend.example.com:1337/admin ' 预检请求未通过访问控制检查的响应:没有 'Access-Control-Allow-Origin' 标头存在于请求的资源。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

我尝试向 config/environments/production/security.json 添加一个来源

“起源”: ”*”

"origin": "backend.example.com"

他们都没有工作。我仍然收到错误。

我会很感激这方面的一些帮助。

sai*_*tam 6

对我来说以下配置有效:

// file: root_project/config/middleware.js:

module.exports = {
  //...
  settings: {
    cors: {
      enabled: true, 
      // headers: '*', 
      origin: ["http://localhost", 'https://foo.example'],
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

设置headers: '*'是访问控制协议最简单的使用。服务器发回带有 的 Access-Control-Allow-Origin 标头,这意味着该资源可以由任何源Access-Control-Allow-Origin: *访问。

如果您希望将对资源的访问限制为仅来自https://foo.example的请求(以便除https://foo.example之外没有其他域可以以跨站点方式访问资源),请使用上面的设置,以便您的服务器发送:Access-Control-Allow-Origin: https://foo.example

注意:当响应凭证请求时,服务器必须在标头值中指定来源Access-Control-Allow-Origin,而不是指定“ *”通配符。


小智 -6

https://github.com/strapi/strapi/issues/7296

升级和迁移strapi版本。