首页 > 解决方案 > Laravel echo 以表单而不是 JSON 形式发送数据

问题描述

我正在开发一个小应用程序,我在前端使用 NuxtJS,在后端使用 Laravel8 和 LaravelWebsockets 包。

我注意到一些非常奇怪的东西,我无法真正改变。

所以只是为了测试,我在 NuxtJS 中为 Laravel Echo 制作了一个插件,以便在请求中添加一些东西。

    export default function ({ $echo, $auth}) {
        console.log($echo)
        let authData = {
            headers: {
                // Authorization: 'Bearer 1c2d3a31dd0c5e1933c609ffce1ef4e3'
                Authorization: $auth.strategy.token.get(),
                // Accept: 'application/json',
                "X-Requested-With": 'XMLHttpRequest',
                "Content-Type": 'application/json'
            },
        };

        $echo.connector.pusher.config.auth = authData;
        $echo.connector._defaultOptions.auth = authData;
        $echo.connector.pusher.config.auth.headers['Content-Type'] = 'application/json';
        $echo.connector.options.auth = authData;
        // $echo.options.auth = authData;
    }

现在发生的事情是 Echo 发出这样的请求

在此处输入图像描述

这是一个表单数据。因为在我的后端,我通过 API Laravel 将通道设置为身份验证在请求中找不到,channel_name因为它希望请求具有 JSON 正文。

邮递员发出的带有 JSON 正文的相同请求可以正常工作。

我无法弄清楚强制 echo 发送 JSON 请求而不是表单数据的方法。

另外令人讨厌的是,即使我添加了指示内容类型的标头,它也不会覆盖标头,而是合并它们,所以我最终得到了这样的结果:

Content-Type application/x-www-form-urlencoded, application/json

有没有人对如何解决这个问题有任何想法?我有兴趣在这里了解最佳解决方案。干杯!

标签: jsonlaravelapiwebsocketlaravel-echo

解决方案


推荐阅读