【发布时间】:2019-07-12 05:49:12
【问题描述】:
我在 FF 中有一个奇怪的问题,在 Chrome 中没有重现:使用 SSL 连接时,websocket 连接到另一个源不起作用。
我的 Rails 应用程序在 https://wax.lvh.me:3000 上运行,socket.io 节点 JS 应用程序在 https://wax.lvh.me:3001 上运行。当我尝试从 FF 中的 Rails 应用程序连接到套接字时,我在浏览器的开发控制台中看到以下警告:
当我打开“网络”选项卡时,我看到以下响应标头 - 请注意响应中没有访问控制标头:
将来源设置为从this answer 到'*:*'
io = require('socket.io').listen(server)
io.set('origins', '*:*');
设置来自this answer的函数的来源
io.origins (origin, callback) =>
if origin.match(/lvh\.me/)
return callback(null, true)
callback('Origin not allowed', false)
但到目前为止,没有任何东西可以帮助我解决这个问题
请注意,Chrome 中的访问控制标头已正确设置:
我使用以下浏览器和工具版本:
- Firefox - 63.0.3(64 位)
- Google Chrome - 版本 73.0.3683.39(官方构建)测试版(64 位)
- Socket.io - 2.2.0
您知道如何在 socket.io 中为 FF 正确设置 CORS 吗?
【问题讨论】:
-
i.stack.imgur.com/HAcdu.png 处的图像不显示响应标头 - 它仅显示请求标头。您需要查看那里的“响应”选项卡。
-
@sideshowbarker 响应为空白
-
尝试使用
io.origins('*:*')设置origins(在服务器上),在客户端:socket = io.connect('https://wax.lvh.me:3000', { transports: ['websocket'] });,
标签: ssl firefox socket.io cors