网络响应未发送“ allow-origin”标头

时间:2019-06-28 16:04:22

标签: php mysql cors

当我尝试更新数据库对象时,我的Web应用程序出现此错误:

  

CORS策略已阻止从来源“ http://localhost:3001”访问“ http://localhost:8080”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

这些是网络请求:Preflight requestPUT request

我将Slim用于服务器路由,将Vue用于客户端路由,将axios用于数据库连接。

响应中似乎缺少allow origin标头,但我已设置了发送它的服务器:

$app->add(function ($req, $res, $next) {
    $response = $next($req, $res);
    return $response
        ->withHeader('Access-Control-Allow-Origin', '*')
        ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Allow, Origin, Authorization, Access-Control-Allow-Origin')
        ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
});

可以处理具有不同状态(表值)的对象。我怀疑它没有针对这种特定状态的对象使用该响应,但是它使用了相同的形式和方法。我不明白为什么它会使用不同的响应。

更新

我尝试更新的表(文档)用作数据库中另一个表(修订)的外键。我发现,如果我将修订从文档中取消链接,则更新有效。也许CORS错误是假阳性?

1 个答案:

答案 0 :(得分:0)

那毕竟是假阳性。 我试图发送到数据库的实体内部的数组似乎是问题所在。从请求中删除该更新后,更新效果很好。