使用 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 上的副本:
这里是关于流明中间件的官方文档:
https://lumen.laravel.com/docs/7.x/middleware
这里有一些结构良好且知名的中间件,它们可以为您完成这项工作:
我使用 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 上的副本:
这里是关于流明中间件的官方文档:
https://lumen.laravel.com/docs/7.x/middleware
这里有一些结构良好且知名的中间件,它们可以为您完成这项工作: