Websocket 和跨域
Posted
技术标签:
【中文标题】Websocket 和跨域【英文标题】:Websocket and cross-domain 【发布时间】:2014-07-24 17:52:09 【问题描述】:目前,我正在开发两个 webapp:
核心,用 Java 和 Vert.x 开发,从许多其他应用程序接收数据并将其发送到客户端) 客户端,用 php/JS 开发,从核心显示数据。在生产阶段,客户端与我的核心不在同一个域中。
从我的开发阶段开始,这两个 web 应用程序都托管在同一台计算机上。我使用“ws:\\localhost:9090”将客户端连接到我的核心,传输数据没有问题。
但是,今天,我尝试将 localhost 替换为我的 IP 地址,但没有成功:s
我认为这是因为客户端与核心不在同一个域中。但我不知道如何解决这个问题?
你有什么想法吗?
谢谢!
代码示例(基于我的代码,但不是我的代码;)):
核心:http://pastebin.com/h2ZnBvQJ 对于客户:http://pastebin.com/DR5BeABf【问题讨论】:
【参考方案1】:是的,Websocket 可以跨域,但是你需要握手才能实现。您可能想查看:http://en.wikipedia.org/wiki/WebSockets 以获取握手示例。
也相关且可能重复:Web sockets make ajax/CORS obsolete?
【讨论】:
感谢您的回答,但我已经“解决”了我的问题。我使用代理,Wireshark 显示该代理切断了我的 websocket http 标头。所以我的核心没有看到 websocket 连接。没有这个代理,websocket 就可以工作了…… 然后使用 wss://(安全)连接。一些代理对 WS 不友好,它们会尝试像在普通 HTTP 请求中一样更改标头。例如,一些代理删除了“Upgrade:websocket”标头(因为被标记为“Connection”)。以上是关于Websocket 和跨域的主要内容,如果未能解决你的问题,请参考以下文章