亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將表單數據添加到 Laravel Echo 請求?

如何將表單數據添加到 Laravel Echo 請求?

繁花如伊 2022-10-08 15:06:39
我正在嘗試使用 Laravel Echo 請求發送一些數據window.Echo = new Echo({    broadcaster: 'pusher',    key: 'somekey',    wsHost: '127.0.0.1',    wsPort: 6001,    encrypted: false,    disableStats: true,    forceTLS: false,    authEndpoint: 'http://127.0.0.1:8000/broadcasting/auth',    'form-data': {          // I tried data, dataForm, dataform        someData: '123',    // this doesn't seem to work                    },                  });我已經看到如何將自定義標頭添加到請求中auth: {    headers: {          token: '123'    }}有沒有辦法以類似的方式添加表單數據?編輯當我在 DevTools 中檢查網絡請求時,我可以看到formDataEcho 向服務器發送了兩個屬性。所以我認為必須有一種方法可以將附加屬性附加到現有formData對象中
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

有沒有辦法以類似的方式添加表單數據?


簡單回答是不


Laravel Echo 沒有在參數集中實現該功能的功能。


我們可以Form Data在開發工具請求中看到對象的原因是因為 pusher-js 在向服務器發出請求之前添加了它們。為了實現這一點,我們必須在請求執行之前操作推送器 API,但這偏離了該線程的原始主題。


因此,如果您想將數據發送到服務器,最簡單的方法是添加原始問題中指出的自定義標頭。


...

auth: {

    headers: {

          token: '123'

    }

}

...


查看完整回答
反對 回復 2022-10-08
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

編輯 1


我真的不確定這是否真的有效,但你可以嘗試一下嗎


class LaravelEcho extends Echo {

    constructor(options) {

        super(options);


        this.setformData();

    }


    setformData(formData = this.options.formData) {

        if (formData) {

            let path =

                "?" +

                Object.entries(formData)

                    .map((ch) => ch.join("="))

                    .join("&");


            this.options.authEndpoint += path;

            this.connector.options = this.options;

            // since you are using pusher

            if (this.connector.pusher) {

                this.connector.pusher.options = this.options;

            }

            // maybe also for socket.io too?

            else if (this.connector.socket) {

                this.connector.socket.options = this.options;

            }

        }

    }

}


let myEcho = new LaravelEcho({

    broadcaster: "pusher",

    key: "somekey",

    wsHost: "127.0.0.1",

    wsPort: 6001,

    encrypted: false,

    disableStats: true,

    forceTLS: false,

    authEndpoint: "http://127.0.0.1:8000/broadcasting/auth",


    formData: {

        foo: "bar",

        username: "username",

        password: "password",

    },

});


console.log(myEcho);

我知道這真的不是你想要的方式。我試圖按照@Islam 在評論中所說的那樣做到這一點,我真的想知道如果我們只是在創建后覆蓋選項,這是否會像這樣工作:)


老的


我正在調查這個。在這里我看到有一個headers選項如下:


private _defaultOptions: any = {

    auth: {

        headers: {},

    },

    authEndpoint: '/broadcasting/auth',

    broadcaster: 'pusher',

    csrfToken: null,

    host: null,

    key: null,

    namespace: 'App.Events',

};

這是Connecter's default options 并且在它里面它也在這里constructor設置了一個 auth headercsrfToken


所以我猜你在創建 Laravel/Echo 時可能會這樣做,


window.Echo = new Echo({

    broadcaster: 'pusher',

    key: 'somekey',

    wsHost: '127.0.0.1',

    wsPort: 6001,

    encrypted: false,

    disableStats: true,

    forceTLS: false,

    authEndpoint: 'http://127.0.0.1:8000/broadcasting/auth',

    auth: {

        headers: {

           'X-CSRF-TOKEN': 'your-csrf-token'

           'your-header': 'with-value'

        }

    }    

});

希望這對你有用。請務必告訴我!:)


順便說一句,我沒有測試環境,所以我從未測試過它..


查看完整回答
反對 回復 2022-10-08
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號