使用 superagent 和 Lumen API 的 CORS 策略阻止了请求

Request blocked by CORS policy using superagent and a Lumen API

我使用 PHP Lumen 框架创建了一个 REST API,我使用以下方法删除了所有 CORS 开发限制:

// Enable CORS on all API routes
header('Access-Control-Allow-Origin: *');
header("Access-Control-Expose-Headers: Content-Length, X-JSON");
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Authorization, Lang, Content-Type, X-Auth-Token');

然后在前端我使用库 superagent 来调用它。例如我调用路由 POST http://127.0.0.1:8000/auth/register:

superagent.post('http://127.0.0.1:8000/auth/register').send({
  name: 'name',
  email: 'test@test.test',
  password: '1234Test'
}).type('application/json')
  .end((err, res) => {
    console.log(res)
    console.log(err)
  })

很遗憾,我收到一条我无法理解的 CORS 错误消息:

Access to XMLHttpRequest at 'http://127.0.0.1:8000/auth/register' from origin 'http://localhost:9000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

我做了一些研究,但我找不到任何错误 It does not have HTTP ok status 并且在 Postman 上测试相同的请求没有给我任何错误,但正常行为。

有人知道我该如何解决吗?在哪里可以找到有关此类错误的文档?

我很好奇为什么你要自己设置 headers "manually" 而不是使用一些现有的和经过验证的 CORS-Middlwares 来为你做所有的事情。我会避免重新发明轮子,除非你需要它 study-cases。

这是 Whosebug 上的副本:

Enable CORS in lumen

这里是关于流明中间件的官方文档:

https://lumen.laravel.com/docs/7.x/middleware

这里有一些结构良好且知名的中间件,它们可以为您完成这项工作: