带有Golang的交叉原点WebSocket

带有Golang的交叉原点WebSocket,websocket,go,Websocket,Go,我正在开发一个相对简单的PhoneGap应用程序(iOS),它需要向Go服务器发出跨源websocket请求。我已经设置了$.support.cors=true;$。mobile.allowCrossDomainPages=true。服务器提供一个简单的HTML/JavaScript页面用于测试/诊断目的,一切都很好——websocket连接工作正常,服务器提供正确的数据,一切都很好 在iOS模拟器上运行的PhoneGaApplication并非如此。在模拟器中,Safari实际上可以到达我的测

我正在开发一个相对简单的PhoneGap应用程序(iOS),它需要向Go服务器发出跨源websocket请求。我已经设置了
$.support.cors=true;$。mobile.allowCrossDomainPages=true。服务器提供一个简单的HTML/JavaScript页面用于测试/诊断目的,一切都很好——websocket连接工作正常,服务器提供正确的数据,一切都很好

在iOS模拟器上运行的PhoneGaApplication并非如此。在模拟器中,Safari实际上可以到达我的测试/诊断页面。但是,PhoneGaApplication超时


我正在做更多的调查,但我怀疑这是一个简单的服务器配置问题,而且有人对Go和/或祝福websockets软件包有更多的了解,我想我会在调查的同时问这个问题。

PhoneGAP应用程序中没有跨域问题(请记住,此策略是在客户端强制执行的,并且服务器的头仅给出指示)


问题可能出在您的握手中,因为PhoneGAP不支持websocket握手。PhoneGAP/iOS as中有一些开源项目引入了它(我不是iOS开发人员,所以没有进行测试)。

CORS不适用于websocket。有了websocket,就有了“起源”标头,浏览器必须用包含打开WS连接的JS的HTML的源代码填充该标头。非浏览器客户端可能会也可能不会填充该标头(并且可以用任何他们喜欢的内容填充该标头)。然后,WS-server可以决定是否接受该连接

进一步:我不知道当HTML来自本地文件系统时,PhoneGap使用的WebView是否设置了源文件头。我会尝试窃听流量并查看一下