2017-04-22 17 views
0

ソケットIOを使用してバックエンドサーバーと通信するクロムエクステンションに取り組んでいます。問題は、私の接続がクロスオリジンのポリシーによってブロックされているように見えることです。ソケットIO - Chrome拡張CORS

私のサーバはローカルホスト上で動作していますが、ローカルディレクトリからロードしているクロムエクステンションには他の「origin」ヘッダがあり、リクエストがブロックされています。

ローカルChrome拡張機能からソケットIO接続を許可するにはどうすればよいですか?

要求:

https://localhost:8000/socket.io/?EIO=3&transport=polling&t=LkNvOuH net::ERR_CONNECTION_CLOSED 

ヘッダ:

Provisional headers are shown 
Accept:*/* 
Origin:chrome-extension://acgnndapfmilgphkhkdkipfiipikkjki 
Referer:https://docs.google.com/presentation 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 

答えて

0

あなたは正しくSocket.IOを統合する方法を示しており、このdocumentationをチェックすることもできます。

などの詳細、Socket.IOは二つの部分から構成されています

  • (またはマウント)のNode.js HTTPサーバーと統合サーバー:socket.io
  • クライアントライブラリをロードします

    :ブラウザ側:あなたは一つだけのモジュールをインストールする必要がありますのでsocket.io-client

ということにも注意してくださいは、開発中に、socket.ioは、自動的にクライアントを提供しています

npm install --save socket.io 

これでモジュールがインストールされ、package.jsonに依存関係が追加されます。編集index.jsはそれを追加します。さらに

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

、私はIOを(呼び出して任意のURL)を指定していないよ

お知らせを、デフォルト以来、機能のホストに接続しようとしますページ。

最後に、threadまたはこれに関連するSO postから提案された解決策を確認することもできます。

あなたがバックエンドでExpressフレームワークを使用するケースでは
0

、私は、サーバーへのcorsミドルウェアを追加することによってそれを解決し、私はこの行を追加app.use(cors())