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

我使用 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 错误消息:


从源“ http://localhost:9000 ”访问“ http://127.0.0.1:8000/auth/register ”处的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。


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


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


慕神8447489
浏览 102回答 1
1回答

缥缈止盈

我很好奇为什么您要自己“手动”设置标头,而不是使用一些现有的和经过验证的 CORS-Middlwares,这将为您带来所有的魔力。除非您在学习案例中需要它,否则我会避免重新发明轮子。这是 stackoverflow 上的副本:在流明中启用 CORS这是关于 lumen 中间件的官方文档:https://lumen.laravel.com/docs/7.x/middleware这里有一些结构良好且众所周知的中间件,它们将为您完成这项工作:https://github.com/fruitcake/laravel-corshttps://github.com/spatie/laravel-cors
打开App,查看更多内容
随时随地看视频慕课网APP