2017-04-22 118 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())