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

时间:2020-03-22 11:47:15

标签: javascript php cors lumen superagent

我已经使用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://127.0.0.1:8000/auth/register”到“ http://localhost:9000”的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。

我进行了一些研究,但由于错误It does not have HTTP ok status找不到任何东西,因此在Postman上测试相同的请求不会给我带来任何错误,只是正常的行为。

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

1 个答案:

答案 0 :(得分:2)

我很好奇为什么您要自己“手动”设置标题,而不是使用一些现有的和经过验证的CORS-Middlwares来为您做所有的魔术。除非您在学习案例中需要它,否则我将避免重新发明轮子。

这是stackoverflow上的重复项:

Enable CORS in lumen

以下是有关流明中间件的官方文档:

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

以下是一些结构良好且众所周知的中间件,它们将为您完成这项工作: