我正在开发一个相对简单的PhoneGap应用程序(iOS),它需要向Go服务器发出跨源websocket请求。在任何网络活动之前,我已在我的应用程序中设置了$.support.cors = true; $.mobile.allowCrossDomainPages = true;
。服务器提供一个简单的HTML / JavaScript页面用于测试/诊断目的,一切都很好 - websocket连接工作,服务器提供正确的数据,这都是花花公子。
在iOS模拟器上运行的PhoneGapplication不是这种情况。在模拟器中,Safari实际上可以到达我的测试/诊断页面。但是,PhoneGapplication超时。
我正在进行更多的调查,但我怀疑这是一个简单的服务器配置问题,而且有更多了解Go和/或祝福的websockets包的人,我想我会在这里同时询问我的调查。
答案 0 :(得分:2)
CORS不适用于WebSocket。使用WebSocket,有一个“origin”标题,浏览器必须填充包含打开WS连接的JS的HTML的来源。非浏览器客户端可能填充或不填充该标题(并且可以用他们喜欢的任何东西填充它)。然后,WS服务器可以决定是否接受连接。
此外:当HTML来自本地文件系统时,我不知道PhoneGap使用的WebView是否设置了原始标头。我会尝试窃听流量并看看。
答案 1 :(得分:0)
PhoneGAP应用程序中没有跨域关注(请记住,此策略是强制客户端的,并且服务器的标头仅提供指示)。
问题可能出在握手中,因为PhoneGAP本身不支持websocket握手。有一些开源项目在PhoneGAP / iOS中引入this one(我没有测试过,因为我不是iOS开发人员)。