【问题标题】:laravel automatically make requests to /api/... XMLHttpRequestlaravel 自动向 /api/... XMLHttpRequest 发出请求
【发布时间】:2018-04-04 01:04:52
【问题描述】:

我需要发送一个包含我所有请求的 XMLHttpRequest 标头以获得 json 响应

是否可以将此作为所有 api 路由的默认行为?

编辑:

当请求失败(例如请求验证错误)时,laravel 会自动重定向到主路由。

但是,当我定义 X-Requested-With: XMLHttpRequest 标头时,我收到一个 json 响应,告诉我出了什么问题。

由于我在 /api 下的所有端点都是 json 特定的,因此我希望默认为这种行为而无需定义标头。

【问题讨论】:

  • 嘿,克里斯,您要达到的目标还不是很清楚。也许您可以尝试包含一些代码并在问题中添加更多内容,以便更多人可以帮助您?
  • 通常你从另一边接近这个并在你的前端 ajax 请求上设置默认标头。默认情况下,Laravel 已经为 axios 做到了这一点。 github.com/laravel/laravel/blob/master/resources/assets/js/…

标签: laravel api xmlhttprequest


【解决方案1】:

您可以使用“之前”中间件执行此操作,使用中间件将 X-Requested-With 标头注入请求中。

创建app/Http/Middleware/ForceXmlHttpRequest.php:

namespace App\Http\Middleware;

use Closure;

class ForceXmlHttpRequest
{
    public function handle($request, Closure $next)
    {
        $request->headers->set('X-Requested-With', 'XMLHttpRequest');

        return $next($request);
    }
}

将中间件应用到您的 api 中间件组。编辑app/Http/Kernel.php

'api' => [
    'throttle:60,1',
    'bindings',
    \App\Http\Middleware\ForceXmlHttpRequest::class,
],

当然,这确实会从请求者手中夺走控制权。就框架而言,对api中间件组的每一个请求都将被视为一个ajax请求,请求者没有办法说别的。只是需要记住的一点。

注意:未经测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2014-04-16
    • 2016-02-16
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2022-10-06
    相关资源
    最近更新 更多