【问题标题】:Pusher auth endpoint responded with html, how to fix this?Pusher auth 端点以 html 响应,如何解决这个问题?
【发布时间】:2019-03-27 08:39:03
【问题描述】:

我目前正在使用 laravel 5.8 和 pusher 3.0.3,我对这些新技术不熟悉。我创建了一个简单的聊天室,但未能使用pusher 收听出席频道。我之前尝试过Echo,但我找不到调试它的方法。

这是来自控制台的pusher:subscription_error

Pusher: JSON returned from webapp was invalid, yet status code was 200. Data was: <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

我已经将此行添加到我的BroadcastServiceProvider.php

Broadcast::routes(['middleware' => ['auth:api']]);
require base_path('routes/channels.php');

我已经通过公共频道从推送调试器接收事件,所以我认为我的凭据设置正确。

这是我的bootstrap.js 的底部部分。

const CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');

var pusher = new Pusher('61540f91921896045e25', {
    cluster: "ap1",
    forceTLS: true,
    //authEndpoint: 'authchatuser'
    authEndpoint: '/broadcasting/auth',
    auth: {
      headers: {
        'X-CSRF-Token': CSRF_TOKEN
      }
    }
});

var channel = pusher.subscribe('presence-chatroom');

//var channel = pusher.subscribe('chatroom');
channel.bind('MessagePosted', function(data) {
   console.loga(data);
});

channel.bind('pusher:subscription_error', function(data) {
   console.log("Pusher: " + data);
});

从网络选项卡中,我看不到对推送器 authEndpoint broadcasting/auth 的请求,但我看到了对我的主页的 GET 请求,该请求以 200 响应,我认为这就是我收到 @987654332 的原因@ 而不是 json

请帮我解决这个问题,或者您是否有想法绕过端点并从我的web.php 发送 json 数据进行身份验证(推送者预期的正确数据)?谢谢。

【问题讨论】:

    标签: laravel pusher


    【解决方案1】:

    您不需要绕过端点,而是应该修改端点以返回正确的数据。 您的身份验证端点应返回 JSON 正文以及 HTTP 代码。 The documentation 状态:

    来自身份验证端点的成功响应应携带 200 OK HTTP 状态和表单正文
    { "auth": $AUTHORIZATION_STRING }

    这与您收到的错误一致,该错误表明预期的是 JSON,但收到的是 HTML。

    【讨论】:

    • 感谢您的回答。有没有一种方法可以以某种方式包含来自 pusher init 的数据,以便我可以告诉端点我需要一个 json?或者问题可能出在我的广播服务提供商身上?还是路线?如果我知道 pusher 对响应的 auth 属性的期望,那么也许我可以从自定义端点实现它。
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多