私のNode.jsサーバーは、しかし、開発環境は、次のコンソールエラーをスローし、私のライブのウェブサイト「https://www.example.com」で見事に動作します:なぜサブドメインでnode.jsサーバーが動作しないのですか(WHMサーバーでcloudflareを使用しています)?
「のXMLHttpRequestはhttps://dev.example.com:2083/socket.io/?EIO=3&transport=polling&t=LtTLz1_をロードすることはできませんいいえ 『アクセス制御 - 許可 - 起源』ヘッダが存在しています。オリジン 'https://dev.example.com'はアクセスが許可されていません応答にはHTTPステータスコード522があります。
私はCloudFlareのを使用していますし、私は2台のNode.jsサーバが実行している、ライブサーバーは、ポート2053上で動作し、devが、私は、ヘッダーのアクセス・コントロール - を追加するために、いくつかの方法を試してみました2083
ポート上で実行されますAllow-Origin:*と何も動作していないようです。
var fs = require('fs');
var options = {
ca: fs.readFileSync(__dirname + '/ca.pem'),
key: fs.readFileSync(__dirname + '/file.pem'),
cert: fs.readFileSync(__dirname + '/file.crt')
};
var express = require('express'),
app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
var https = require('https'),
server = https.createServer(options, app),
io = require('socket.io').listen(server);
server.listen(2083);
私はここに欠けているものがある:
ここに私のNode.jsスクリプトの先頭部分はありますか?
CORSの問題ではなく、クラウドフレア接続のタイムアウトの問題です(設定をダブルチェックしてください) – samsonthehero
Webページとは別のホストへのsocket.io接続をロードしようとしている場合は、 socket.ioサーバーにCORSサポートを追加する(クロスオリジン接続を許可する)か、WebSocket接続がCORSの対象外であるため、socket.ioをwebSocket(初期ポーリングなし)にのみ接続する必要があります。 – jfriend00
socket.ioにwebSocketのみを使用させ、CORSを回避する方法は次のとおりです。[Socket.io 1.x:WebSocketsのみ使用する](https://stackoverflow.com/questions/28238628/socket-io-1-x -use-websockets-only/28240802#28240802)と[CORSのsocket.ioの設定方法](https://stackoverflow.com/a/38749535/816620)を参照してください。 – jfriend00