websocket - Golangを使用したクロスオリジンWebソケット

websocket go

GoサーバーにクロスオリジンWebソケットリクエストを送信する必要がある比較的シンプルなPhoneGapアプリケーション(iOS)を開発しています。ネットワークアクティビティの前に、アプリケーションに$.support.cors = true; $.mobile.allowCrossDomainPages = true;を設定しました。サーバーはテスト/診断の目的でシンプルなHTML / JavaScriptページを提供し、すべてがそこでうまく機能します-WebSocket接続が機能し、サーバーは正しいデータを配信します。

これは、iOSシミュレーターで実行されているPhoneGapplicationには当てはまりません。シミュレーターでは、Safariは実際に私のテスト/診断ページにアクセスできます。ただし、PhoneGapplicationはタイムアウトします。

私はさらに調査を行っていますが、これは単純なサーバー構成の問題であり、Goおよび/または祝福されたwebsocketsパッケージの知識が豊富な人であることが疑われます。調査と同時にここで質問したいと思いました。
答え
CORSはWebSocketには適用されません。 WebSocketには「origin」ヘッダーがあり、ブラウザはWS接続を開くJSを含むHTMLのオリジンで埋める必要があります。ブラウザ以外のクライアントは、そのヘッダーを埋める場合と埋めない場合があります(とにかく好きなもので埋めることができます)。 WSサーバーは、接続を受け入れるかどうかを決定できます。

さらに、PhoneGapで使用されるWebViewが、HTMLがローカルファイルシステムからのものである場合にoriginヘッダーを設定するかどうかはわかりません。トラフィックを盗聴してみてみる。
関連記事

ruby-on-rails - これにはどのWebSocketシステムを使用すればよいですか?

java - jetty、websocketsおよびUTF8エンコーディング

python - HTML5 WebSocketサーバー

html - Socket.IO Websocket送信メッセージがFirefoxおよびChromeで機能しない

html - CコードでのWebSocketのハンドシェイク

c# - C#WebSocketバージョン8以降のサーバー通信

html - PHP共有ホスティング上のWebSockets

lua - LuaからWebSocketハンドシェイクを生成するにはどうすればよいですか?

node.js - Socket.io Expressアプリが「送信者」のクライアントに送信しているのはなぜですか?

firefox - FirefoxがWebsocketホストドメイン間でCookieをリークする