node.js - extraHeaders 在 socket.io-client 中不起作用
问题描述
嗨,我的代码在 nodejs 中看起来像这样,它可以工作!
但是当我尝试在 nwjs 应用程序中使用完全相同的代码时,它没有!因为当我嗅探并看到它认为它在 Web 浏览器下运行并且它尝试使用 nwjs 的 chromium 浏览器的本机功能。
function connecttest(domain)
{
socket = require('socket.io-client')('https://ws.'+domain.replace('www.').replace('m.'),{
forceNode:true,
transports: ['websocket'],
extraHeaders: {
'Origin': 'https://www.'+domain.replace('www.').replace('m.')
},
transportOptions: {
polling: {
extraHeaders: {
'Origin': 'https://www.'+domain.replace('www.').replace('m.')
}
}
}
});
socket.on('connect', function(socket){
console.log("ok");
socket.emit('query', {"body":{"siteId":"9","source":1,"lang":"tr"},"action":"site.session","frontEndId":0,"token":null});
socket.on('response', function(data){
console.log(data);
});
});
}
如您所见,它无法设置正确的来源标头
但它在普通的nodejs脚本下工作
解决方案
也许它是你的transports: ['websocket']
。看这里,在官方文档中:
带有额外的标头
这仅
polling
在启用传输时才有效(这是默认设置)。websocket
用作传输时不会附加自定义标头 。发生这种情况是因为 WebSocket 握手不支持自定义标头。(有关背景,请参阅 WebSocket 协议 RFC)
推荐阅读
- c# - CAS 政策 - 无法打开表单设计器
- php - 语法错误,意外 '=>' (T_DOUBLE_ARROW),期待 ')' (查看:C:\xampp\htdocs\login\resources\views\pages\index.blade.php)
- asp.net - 如果我在模型上生成构造函数,是否需要生成新的迁移?
- python - 在 kmeans Lloyds 算法中计算距离
- android - Timertask Run() 方法不能工作更长的时间,比如 2 小时
- javascript - javascript push 导致 main 函数参数用于确认使用
- excel - 如何修复 ExcelVBA 错误中的自动大写
- html - 如何使用最小高度 div 制作响应式列视图?
- azure - 为 Azure CDN 创建服务主体失败并出现租户权限错误
- python - 熊猫在本月剩余时间的总和