2

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

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

私はさらに調査を行っていますが、これは単純なサーバー構成の問題であり、Go および/または祝福された websockets パッケージについてより多くの知識を持っている人であると考えており、調査と同時にここで質問したいと思いました。

4

2 に答える 2

2

CORS は WebSocket には適用されません。WebSocket には「origin」ヘッダーがあり、ブラウザは、WS 接続を開く JS を含む HTML のオリジンを入力する必要があります。ブラウザ以外のクライアントは、そのヘッダーを埋める場合と埋めない場合があります (とにかく、好きなもので埋めることができます)。WS サーバーは、接続を受け入れるかどうかを決定できます。

さらに:HTMLがローカルファイルシステムからのものであるときに、PhoneGapで使用されるWebViewがオリジンヘッダーを設定するかどうかはわかりません。トラフィックを盗聴して見てみます。

于 2012-06-18T08:47:58.380 に答える
0

PhoneGAP アプリケーションでは、クロス ドメインの問題はありません (このポリシーはクライアント側で適用され、サーバーのヘッダーはその兆候のみを示すことに注意してください)。

PhoneGAP は websocket ハンドシェイクをネイティブにサポートしていないため、問題はおそらくハンドシェイクにあります。これを PhoneGAP/iOS に導入するオープン ソース プロジェクトがあります(私は iOS 開発者ではないため、テストしていません)。

于 2012-06-18T06:06:45.213 に答える