2017-04-22 40 views
0

我正在使用套接字IO與後端服務器進行通信的擴展。問題是我的連接似乎被跨源策略阻止。套接字IO - Chrome擴展CORS

我的服務器在localhost上運行,我從本地目錄加載的chrome擴展有一些其他的「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

你可能要檢查這個documentation這表明你如何正確地集成Socket.IO。

所詳述,Socket.IO是由兩個部分組成:

  • 與集成(或安裝在)的Node.js HTTP服務器A服務器: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檢查建議的解決方案。

0

如果您在使用後端框架快,我解決它通過添加cors中間件服務器和我加入這行app.use(cors())