私はHTML5/WebSocketクライアントとHTTP/WSサーバーで構成されるtestappを持っています。両方のサーバーはC#にあります。 HTTPサーバーは私自身の単純なもので、WSサーバーはまた、http://nugget.codeplex.com/の概念に基づいて自作しています。 HTTPサーバーは0.0.0.0:5959でリッスンし、WSサーバーは0.0.0.0:5960でリッスンしています(クライアントからの接続は受け入れますが、別のポートで受け入れます)。WebSocketは127.0.0.1/localhost以外に接続しません
私のindex.htmlには、WebSocketを'ws://'+document.location.hostname+':5960/'
(つまり、Webページと同じIPアドレスですが、ポート5960)に開くJavaScriptが含まれています。 WSサーバーはサンプルデータを100msごとに送信します。全体的に、それはかなり簡単なデモです。 Windows7でChrome 12.0を使用しています。
私はHTTPサーバーが127.0.0.1:5959またはlocalhost:5959を指しているブラウザのいずれかのクライアントから動作していることを発見しました。これはどのマシン(マインまたはリモートマシン)でも動作します。 「リモート」は私の机の上にある別のPCです:)私のサーバーマシンのワーク内部10ネットアドレス10.122.0.159:5959に当たっています。 HTTPの土地ではすべてが期待どおりに機能します。
ただし、WebSocketは127.0.0.1およびlocalhostでのみ動作します。リモートマシンは10.122.0.159:5959からHTMLを正常に取得できますが、WebSocketは10.122.0.159:5960に接続しません。実際に、自分のローカルブラウザに自分自身の10-netアドレス(10.122.0.159:5959)を指定すると、同じ結果が得られます.HTMLはロードされますが、WebSocketは接続されません。
これはなぜ起こっているのでしょうか? CORSでは、WSからのHTTP要求と同じポートを使用する必要がありますか。もしそうなら、127.0.0.1のルールに対する特別な例外はありますか? //リクエスト:
多くのおかげで、
-Dave
アップデートは
WSを遮断するプロキシサーバによって引き起こされているように見えます。私たちの会社はコンテンツフィルタリングのためのプロキシサーバーとすべての通常のものを使用しており、私たちのブラウザはそれを使用するように構成されています。
ChromeはIEのプロキシ設定を使用し、IEのデフォルト設定はではなく、はプロキシサーバーを使用します。ローカル接続にもプロキシサーバーを使用させるためにチェックボックスをオンにすると、私のws://要求がlocalhostにブロックされます。逆に、「プロキシサーバーを使用する」ボックスをオフにすると、はになります。リモートマシンと同様に、リモートマシンのプロキシをオフにすると、はになります。wx://要求。
これはプロキシのことであり、CORSやソケットのことではなく、今私はITスタッフとプロキシ設定を探求していません。
「私たちのITスタッフに変更を求めてください」という世界では、これまでどんな世界で動作しますか? – Sphvn