2

私は使用しています: "socket.io": "~0.9.10"

ポート 80 でホストされている Apache Web サーバーでホストされている client.html ページに移動すると、この問題が発生します。

XMLHttpRequest cannot load http://localhost:5000/socket.io/1/?t=1348624895534. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

以下に示すように、サーバー側でポート 5000 になるように SocketIO を実行しています。

io = io.listen(5000);
io.set("origins","*");

ただし、apache client.html ページをロードするたびに、SocketIO サーバー コンソールに次のように表示されます。

warn: illegal origin: http://localhost

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

あなたはCORSをやっています。

あなたが得ているエラーは、Socket.IO が Websockets ではなく XHR を使用しているように見えるという事実から来ています。これは、websocket が利用できないときに socket.IO が行うことであり、別のプロトコル、FlashSockets、XHR ポーリングなどを使用します。

別の Web サイト (ここでは Socket.io サーバー) に対してクエリを実行できるようにするには、Apache サーバーにヘッダーを設定する必要があります。

ここに方法があります。

サーバーを 1 つだけ使用する場合は、はるかに簡単になります。Express を使用して静的 html ファイルを配信できます。これは、 Socket.IO + Express を簡単に使い始めるためのデモ/チュートリアル アプリです。

このデモは dotCloud をプッシュするためのボイラー プレートであるため、簡単にデプロイしたい場合は、それらの手順に従ってください。

于 2012-09-26T02:13:59.370 に答える
0

'Access-Control-Allow-Origin'ヘッダーをに設定してみてください'*'

response.writeHead(200, {
  'Access-Control-Allow-Origin': '*'
});
于 2012-09-26T02:09:49.420 に答える