Laravel 5.4 + jQuery CORS请求

时间:2017-07-08 13:27:30

标签: jquery ajax laravel cors

我有两个laravel应用程序,一个用作管理面板,另一个用作API服务器。

我正在尝试对API执行jQuery AJAX Post请求,但响应的行为似乎很奇怪。

我正在使用barryvdh / laravel-cors在API上启用CORS。我也尝试禁用它并添加"选项"手动请求,但我仍然有同样的行为。

问题似乎与预检请求之后发出的请求有关。以下是发送方式的顺序(注意初始请求是POST):

  • 预检请求(选项 - 工作正常)

  • 对API端点的GET请求(不知道为什么会这样做)。它将302 Found重定向返回给referer(发送给客户端)

  • 对API端点的POST请求。相同的302重定向回来。

  • 对发送请求的管理网址的OPTIONS请求(由于管理员应用程序上没有CORS而失败)。

这是一张包含请求流程的图片: Request Flow (Chrome network panel)

我必须提到我没有在控制器中进行任何重定向,也没有添加任何可以执行此操作的中间件。

1 个答案:

答案 0 :(得分:2)

所以很明显,在这种情况下,没有一种方法可以确定请求是否必须作为JSON回答,特别是$ request-> ajax()和$ request-> wantsJSON();

我通过在我的基本ApiController上覆盖函数buildFailedValidationResponse来解决问题,方法是让它始终返回JSON响应。

protected function buildFailedValidationResponse(Request $request, array $errors)
{
    return new JsonResponse($errors, 422);
}