Express 中间件被 CORS 策略阻止(预检 OPTIONS 请求遇到授权错误)

Posted

技术标签:

【中文标题】Express 中间件被 CORS 策略阻止(预检 OPTIONS 请求遇到授权错误)【英文标题】:Express middleware blocked by CORS policy (hitting authorization error for preflight OPTIONS request) 【发布时间】:2020-11-25 21:21:01 【问题描述】:

当这个块不存在时,我的 API 可以正常工作。

当我添加这个块时,我得到一个 CORS 错误:

对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。

我错过了什么?

app.use((req, res, next) => 
  try 
    if (secret !== config.secret) 
      throw new Error('Not Authorized')
     else 
      next()
    
   catch (err) 
    next(err)
  
);

【问题讨论】:

消除了 CORS 错误。谢谢! 【参考方案1】:

如果请求的方法是OPTIONS,请确保不抛出错误:

if (req.method !== "OPTIONS" && secret !== config.secret) 
  throw ...

见https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request。

【讨论】:

以上是关于Express 中间件被 CORS 策略阻止(预检 OPTIONS 请求遇到授权错误)的主要内容,如果未能解决你的问题,请参考以下文章

角 POST 请求被 CORS 策略阻止:对预检请求的响应未通过访问控制检查

被 CORS 策略阻止:对预检的响应...没有 HTTP ok 状态。标头没有解决问题

被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP OK 状态

Laravel 7 CORS:被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”

被 CORS 策略阻止:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权

被 CORS 策略阻止:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段内容类型 [重复]