套接字IO - Chrome扩展CORS

时间:2017-04-22 23:00:34

标签: google-chrome-extension socket.io

我正在使用chrome扩展,它使用套接字IO与后端服务器通信。问题是我的连接似乎被跨域策略阻止了。

我的服务器在localhost上运行,我从本地目录加载的chrome扩展名有一些其他“origin”标头,因此我的请求被阻止。

如何从本地chrome扩展程序允许套接字IO连接?

请求:

for (cur.moveToFirst(); cur.moveToNext(); ) {

标题:

 Add-Type -AssemblyName presentationframework
[xml]$xaml = @'
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="Window" Title="Progress..." WindowStartupLocation = "CenterScreen"
    Width = "400" Height = "165" ShowInTaskbar = "True">
    <Grid>
        <ListBox x:Name="ListBox" Height = "150" Width = "365" HorizontalAlignment="Left" VerticalAlignment="Top"  Margin = "10,35,0,0"/>
    </Grid>
</Window>
'@

$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$Window = [Windows.Markup.XamlReader]::Load($reader)

$ListBox = $Window.FindName("ListBox")

$itm = new-object System.Windows.Controls.ListboxItem
$itm.Content = 'test red'
$itm.Foreground = 'red'
$ListBox.Items.Add($itm)

$itm = new-object System.Windows.Controls.ListboxItem
$itm.Content = 'test green'
$itm.Foreground = 'green'
$ListBox.Items.Add($itm)

$itm = new-object System.Windows.Controls.ListboxItem
$itm.Content = 'test blue'
$itm.Foreground = 'blue'
$ListBox.Items.Add($itm)

$Window.ShowDialog()

2 个答案:

答案 0 :(得分:0)

您可能需要查看此documentation,其中显示了如何正确集成Socket.IO。

详细说明,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中的建议解决方案。

答案 1 :(得分:0)

如果你在后端使用Express框架,我通过向服务器添加cors中间件来解决它,我添加了这一行return target;