我在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进行广播)。
答案 0 :(得分:1)
如果你注释掉Echo代码怎么办?
看,我所能做的就是评论我能看到的代码。我坚持认为socket.io中没有任何内容与jQuery Ajax调用混淆。
因此,问题可能是由socket.io处于活动状态时运行的代码引起的,而不是由socket.io本身引起的。