【问题标题】:CORS wont allow serving static files on apache2 serverCORS 不允许在 apache2 服务器上提供静态文件
【发布时间】:2022-01-01 15:09:03
【问题描述】:

我有一个快速服务器,它允许前端从数据库中获取信息,它工作正常。 Cors 设置了前端白名单,但是尝试获取图像(已经上传并保存)除了 500 错误之外什么都没有。我尝试禁用 cors 并且效果很好,但是任何来源都可以做一些我不希望这个网站做的事情。我使用启用了代理和 proxy_http mod 的 apache,因此它可以访问在 pm2 上运行的 express js 服务器。服务器js上的代码:

const whiteList=['domain.com'];
const corsOptions = {
  origin:function(origin, callback){
    if(whiteList.indexOf(origin) !== -1){
      callback(null, true);
    } else{
      callback(new Error('Not allowed by CORS'));
    }
  }
}
app.use(cors(corsOptions));

我什至尝试在 apache 中设置 cors 标头,但它不起作用,因为它仍然允许来源而不是列表。

【问题讨论】:

  • domain.com 不是origin;它应该以http://https:// 为前缀才能被视为来源。另外,您的 origin 变量是如何声明的?它甚至在任何地方声明?
  • 兄弟,我只称它为 domain.com,所以我没有公开显示实际的白名单信息。就像我说的那样,它工作正常,直到我需要从服务器提供静态文件。
  • 你在“兄弟”中失去了我。

标签: apache express cors static-files


【解决方案1】:

所以我可以通过这样做来解决这个问题:

app.use(cors({origin: "https://example.com", allowedHeaders: ["Authorization", "Content-Type"]}));

实际发现的问题是服务器没有发回所有 cors 标头,包括:Access-Control-Allow-Headers 塞满了所有内容。

这似乎可能是 cors 包的一个错误,因为它的参数在他们自己的对象中管理混乱了服务器返回的内容,所以现在它看起来有点难看。

我什至确实遵循了 cors 文档所说的内容,但这会导致更多奇怪的问题。

【讨论】:

  • 我确实认为可能存在一些与 cors 和头盔冲突的代码,可能是因为头盔配置了发回的标头,所以可能会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 2021-07-19
相关资源
最近更新 更多