Если я подключен через VPN к сети моей компании, внешний веб-сайт SSL (https://mysite.company.com) РАБОТАЕТ ИЗБИРАТЕЛЬНО с node / socket.io
Как только я выхожу из VPN и захожу на сайт, в консоли браузера появляется эта ошибка:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote
resource at https://mysite.company.com:8080/socket.io/?EIO=3&transport=polling&
t=1415132537790-0. This can be fixed by moving the resource to the same domain or enabling CORS.
Я не знаю, почему это происходит только тогда, когда я отключен от VPN … нет никаких запросов, кроме mysite.company.com … Я пробовал так много разных способов, чтобы решить эту проблему путем исследования этой хорошо известной ошибки … … ничего не помогло, я очень надеюсь, что смогу получить поддержку … пожалуйста!
У меня есть это в моем файле .htaccess:
Header always set Access-Control-Allow-Origin "*"Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"Header always set Access-Control-Max-Age "1000"Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
Options FollowSymLinks
# Added a rewrite to respond with a 200 SUCCESS on every OPTIONS request.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
мой файл client.php (раздел html):
<script src="/js/socket.io-1.1.0.js"></script>
<script type="text/javascript">
var socket = io.connect('https://mysite.company.com:8080');
socket.on('notification', function(data) {
alert(data.message);
});
</script>
мой nodeServer.js:
var connectionsArray = [];
//var app = require('express')();
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('C:/certs/mysite_company_com.key'),
cert: fs.readFileSync('C:/certs/star_company_com.crt'),
ca: fs.readFileSync('C:/certs/DigiCertCA.crt'),
requestCert: true,
rejectUnauthorized: false
};
var server = https.createServer(options);
var io = require('socket.io').listen(server);
server.listen(8080, 'mysite.company.com');
io.set('origins', '*:*');
Задача ещё не решена.
Других решений пока нет …