我正在使用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()
答案 0 :(得分:0)
您可能需要查看此documentation,其中显示了如何正确集成Socket.IO。
详细说明,Socket.IO由两部分组成:
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,因为它默认尝试连接到为页面提供服务的主机。
答案 1 :(得分:0)
如果你在后端使用Express框架,我通过向服务器添加cors中间件来解决它,我添加了这一行return target;