2017-06-19 12 views
0

私はソケットioを回して、別のサーバーから接続しようとしているノードサーバーをセットアップしました。 しかし、別のコンピュータの一部のブラウザでこのエラーが発生し、全体的に再接続されます。socket.io、 'Access-Control-Allow-Origin'エラー

XMLHttpRequestはhttps://serverDomain.net:3000/socket.io/?EIO=3&transport=polling&t=Lo_SdiUをロードできません。要求の資格情報モードが 'インクルード'の場合、レスポンスの 'Access-Control-Allow-Origin'ヘッダーの値はワイルドカード '*'であってはなりません。 Origin 'https://www.differentServerDomain.fr'はアクセスできません。 XMLHttpRequestによって開始された要求の信任状モードは、withCredentials属性によって制御されます。

私のJSの設定:

var port = 3000; 
var fs = require('fs'); 
var https = require('https'); 
var express = require('express'); 
var app = express(); 

var options = { 
    key: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/privkey.pem'), 
    cert: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/fullchain.pem') 
}; 
var server = https.createServer(options, app); 
var io = require('socket.io')(server); 
io.origins('https://www.differentServerDomain.fr:* https://www.differentServerDomain.fr/wp-admin/index.php:*'); 

// start of server 
server.listen(port, function(){ 
    console.log('listening on *: '+ port + "\n"); 
}); 

私はあなたの助けを大幅に高く評価されます 、2.2 IOノードの8.0とソケットを使用しています。

EDIT

:この変更がお手伝いします

<script src="https://serverDomain.net:3000/socket.io/socket.io.js"></script> 
<script> 
    var socket = io('https://serverDomain.net:3000'); 
</script> 

答えて

0

解決策が見つかりました。 何らかの理由でデフォルトの転送方法がすべてのサーバーで常に許可されているとは限りません。

そうようなので、私は、クライアント側のニュートラル輸送方法を指定:

var socket = io('https://yourDomain:3000', { transport : ['websocket'] }); 
0

希望:ここ は、クライアントコードです。

var port = 3000; 
    var fs = require('fs'); 
    var https = require('https'); 
    var express = require('express'); 
    var app = express(); 

    app.use(function(req, res, next) { 
     res.header("Access-Control-Allow-Origin", "https://www.differentServerDomain.fr https://www.differentServerDomain.fr"); 
     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
     next(); 
    }); 


    var options = { 
     key: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/privkey.pem'), 
     cert: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/fullchain.pem') 
    }; 
    var server = https.createServer(options, app); 
    var io = require('socket.io')(server); 

    // start of server 
    server.listen(port, function(){ 
     console.log('listening on *: '+ port + "\n"); 
    }); 
+0

が同じXMLHttpRequestのエラーでreconecting切断続け、何もchnageませんでした。試してくれてありがとう。 – lolplayer101

関連する問題