为什么socket.io搞砸了我的ajax标头?

时间:2017-12-05 07:05:43

标签: javascript ajax socket.io xmlhttprequest laravel-echo

我在ajax请求中使用自定义标头:

$.ajaxSetup({
                beforeSend: function (xhr)
                {
                    xhr.setRequestHeader("Authorization",  'Bearer ' + token);
                    xhr.setRequestHeader("Accept",  'application/json');
                }
            });

在我将socket.io聊天添加到我的应用程序之前,它工作得很好。当我包含我的socket.io服务器提供的socket.io.js文件时,我的标题消失了:(

当然,我可以将我的标题放在每个ajax请求中,但这不方便。我原来的方法比较干净。

任何人都可以帮我这个吗?为什么我的标题消失了?有没有办法让他们在使用socket.io时再次工作?

更新

当我摆脱socket.io.js脚本包括:

<script src="http://localhost:6001/socket.io/socket.io.js"></script>

一切正常。不,没有错误,因为我这样做:

if(typeof io !== 'undefined') {
    self.echo = window.Echo = new Echo({
        broadcaster: 'socket.io',
        host: CONFIG.socket_url + ":" + CONFIG.socket_port,
        auth: {
               headers: {
                        Authorization: 'Bearer ' + auth.getToken(),
                        Accept:  'application/json'
               },
        },
     });
 }

UPDATE2

问题可能不是socket.io,而是laravel-echo(使用socket.io进行广播)。

1 个答案:

答案 0 :(得分:1)

如果你注释掉Echo代码怎么办?

看,我所能做的就是评论我能看到的代码。我坚持认为socket.io中没有任何内容与jQuery Ajax调用混淆。

因此,问题可能是由socket.io处于活动状态时运行的代码引起的,而不是由socket.io本身引起的。