为什么 socket.io 弄乱了我的 ajax headers?
Why socket.io is messing up my ajax headers?
我在 ajax 请求中使用自定义 headers:
$.ajaxSetup({
beforeSend: function (xhr)
{
xhr.setRequestHeader("Authorization", 'Bearer ' + token);
xhr.setRequestHeader("Accept", 'application/json');
}
});
在我将 socket.io 聊天添加到我的应用程序之前,它一直运行良好。当我包含 socket.io 服务器提供的 socket.io.js 文件时,我的 headers 消失了 :(
当然,我可以在每个 ajax 请求中放入我的 headers,但这并不方便。我原来的方法更干净。
任何人都可以帮助我吗?为什么我的 headers 不见了?有没有办法让它们在使用 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'
},
},
});
}
更新2
问题可能不是 socket.io,而是 laravel-echo(使用 socket.io 进行广播)。
如果把那个Echo代码注释掉怎么办?
你看,我能做的就是评论我能看到的代码。我坚持我的断言,即 socket.io 中没有任何内容会干扰 jQuery Ajax 调用。
因此,问题可能是由 socket.io 处于活动状态时您 运行 的代码引起的,而不是由 socket.io 本身引起的。
我在 ajax 请求中使用自定义 headers:
$.ajaxSetup({
beforeSend: function (xhr)
{
xhr.setRequestHeader("Authorization", 'Bearer ' + token);
xhr.setRequestHeader("Accept", 'application/json');
}
});
在我将 socket.io 聊天添加到我的应用程序之前,它一直运行良好。当我包含 socket.io 服务器提供的 socket.io.js 文件时,我的 headers 消失了 :(
当然,我可以在每个 ajax 请求中放入我的 headers,但这并不方便。我原来的方法更干净。
任何人都可以帮助我吗?为什么我的 headers 不见了?有没有办法让它们在使用 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'
},
},
});
}
更新2
问题可能不是 socket.io,而是 laravel-echo(使用 socket.io 进行广播)。
如果把那个Echo代码注释掉怎么办?
你看,我能做的就是评论我能看到的代码。我坚持我的断言,即 socket.io 中没有任何内容会干扰 jQuery Ajax 调用。
因此,问题可能是由 socket.io 处于活动状态时您 运行 的代码引起的,而不是由 socket.io 本身引起的。