网络响应不发送“允许来源”标头

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


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


这些是网络请求:Preflight request ; PUT 请求;


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


响应中似乎缺少允许原始标头,但我已将服务器设置为发送它:


$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');

});

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


更新


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


精慕HU
浏览 143回答 1
1回答

缥缈止盈

毕竟这是一个误报。我试图发送到数据库的实体内部的数组似乎是问题所在。从请求中删除它后,更新工作完美。
打开App,查看更多内容
随时随地看视频慕课网APP