我的index.html
中有以下cordova content-security-policy:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https: http: data: blob: 'unsafe-eval'; style-src 'self' 'unsafe-inline'">
我的config.xml
文件如下:
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
我尝试连接到套接字io实例,并且连接成功,但是在控制台中总是出现以下错误:
拒绝连接到'ws://192.168.178.52:8091 / socket.io /?EIO = 3&transport = websocket&sid = 7wM1iepvGxtcJUhcAAAB',因为它违反了以下内容安全策略指令:“ default-src'self'https: http:数据:blob:“不安全评估””。请注意,未明确设置“ connect-src”,因此将“ default-src”用作后备。
此后,我尝试将content-server 192.168.178.52:8091
添加到我的index
文件的meta标签中,但没有成功。我还尝试将ws://*/*
和ws://*
添加到我的config.xml
中(同样没有成功)。
客户:
socketIO.exec = io('http://192.168.178.52:8091');
服务器::
const socketIO = require('socket.io');
const server = {};
server.port = 8091;
server.start = function() {
this.init(port);
console.log('server running on port:' + this.port);
};
server.init = function() {
this.io_socket = socketIO(this.port);
this.io_socket.on('connection', function(socket) {
console.log(socket.id); // 7wM1iepvGxtcJUhcAAAB
});
};
所有程序均按预期工作,客户端控制台中显示错误消息。感谢您的帮助。
编辑:
如果我将我的元标记中的'self'
属性替换为*
,则完全没有错误消息,因此我认为所做的更改不会影响白名单?
答案 0 :(得分:0)
我在index.html
中用以下行作为meta标记修复了错误消息:
<meta http-equiv="Content-Security-Policy" content="default-src ws://192.168.178.52:8091 'self' https: http: data: blob: 'unsafe-eval'; style-src 'self' 'unsafe-inline'">