Использую в проекте Ionic, Socket.io. Бэкенд написан на node.js.
Пытаюсь с помощью клиента достучаться до сервера который расположен в облаке Cloud9.
Выдает ошибку:
XMLHttpRequest cannot load https:/URL. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '192.168.10.159:8100' is therefore not allowed access.
Как я понимаю, проблема в безопасности, в том что Chrome не дает доступ к внешнему ресурсу.
Пробовал:
1) "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security
2) ionic project
"proxies": {
"path": "/chat",
"proxyUrl": "
https://..."
}
3) Пробовал плагин отключающий/включающий CORS для Chrome.
Везде одинаково. Не помогает
Обращаюсь к серверу через сервис:
angular.module('starter')
.factory('Socket', function (socketFactory) {
var url = 'https:...';
var myIoSocket = io.connect( url );
mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
});
На сервере:
// Including Express.js
var express = require('express');
// Creating app Express
var app = express();
// Creating server using express and http
var server = require('http').createServer(app);
Как излечить данный недуг, поскольку далее идти не вариант...?
P.S. Изменил сервер
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
server.on('request', function(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream; charset=utf-8',
'Cache-Control': 'no-cache',
'Access-Control-Allow-Origin': '*'
});
res.end();
})
В данном случае имею другую ошибку:
XMLHttpRequest cannot load https://URL. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin '192.168.10.159:8100' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.Как с этим быть?