/ /なぜソケットはsocket.ioの中で使われるのですか - socket.io、Cors

socket.ioの中でcorsが使われるのはなぜですか? - socket.io、cors

それはsocketioチャットアプリケーションを使用することになるとそれはコアミドルウェアが前提条件であるようです。
しかし、正直なところ、私たちがコーを使う理由は理解できません。

const io = require("socket.io")(server)

私のサーバーはlocalhost:3000で動作していて、そのioは私のサーバーに依存しています。そのため、両方のドメインはlocalhost:3000と同じです。しかし、なぜコアが必要なのでしょうか。 いくつかの説明をいただければ幸いです。

回答:

回答№1は1

socket.ioサーバーが、それを含むWebページのWebサーバーと同じホストおよびポートである場合は、CORはまったく必要ありません。

あなたがhttpを作る必要があるときだけCORsが必要とされます別のドメインまたはポートに要求します。さらに、socket.ioをwebSocketトランスポートのみを使用し、httpポーリングで始まるような小さな初期化ルーチンを使用しないように制限している場合は、CORSを使用してクロスオリジンsocket.ioを実行する必要さえありません。

要約すると、ソケットです。socket.ioサーバーが接続元のWebページとは異なるホストまたはポートである場合にのみioがCORを必要とし、httpポーリング転送をオフにしてsocket.ioがトランスポートとしてのwebSocket。


回答№2の場合は1

ChromeはlocalhostでのCORSリクエストをサポートしていません。 そしてバグがあります WontFixとしてマークされているこの問題に関して。彼らはあなたが使うことを勧めます このクロムエクステンション 開発中に一時的にCORSを無効にします。 そのため、本番環境で削除するのを忘れてしまうような、socket.ioにCORSミドルウェアを用意するのではなく、localhostのテストにchrome拡張子を使用できます。