Een tijd geleden ben ik begonnen met het experimenteren met nodejs en socket.io. Tot zo ver, lukt dat allemaal prima, alleen wou ik nu graag een beveiligde socket.io verbinding open zetten tussen de socket.io server en de web client.
Ik heb een geldig certificaat tot mijn beschikking die op de server draait waar ook het domein van beveiligd is.
Nu kom ik op het probleem, dat zodra ik wil verbinden naar de server, ik de volgende foutmelding krijg in de console van google chrome:
Ik heb daarbij de header toegevoegd in de https server, op de volgende manier:
Als ik de server start, en via socket.io probeer te verbinden krijg ik dus die foutmelding. Maar als ik de headers op haal van de HTTPS server, dan krijg ik het volgende;
Waarbij de headers wel gewoon zijn door gevoerd.
De client maakt verbinding d.m.v. de secured parameter + het gebruikt van https:// voor het domein naam.
De statische HTML pagina's en alle bij hoorende bestanden, zijn op het zelfde domein geplaatst (https://domain.tld).
Is er misschien iemand die me een schop in de goede richting kan geven?
Alvast bedankt!
Ik heb een geldig certificaat tot mijn beschikking die op de server draait waar ook het domein van beveiligd is.
Nu kom ik op het probleem, dat zodra ik wil verbinden naar de server, ik de volgende foutmelding krijg in de console van google chrome:
code:
1
| XMLHttpRequest cannot load https://domain.tld:12457/socket.io/1/?t=1403871407291. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://domain.tld' is therefore not allowed access. |
Ik heb daarbij de header toegevoegd in de https server, op de volgende manier:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| var https = require ('https');
var fs = require ('fs');
var options = {
key: fs.readFileSync('./cert/private.key'),
cert: fs.readFileSync('./cert/certificate.crt'),
ca: [ fs.readFileSync('./cert/ca.pem'), fs.readFileSync('./cert/sub.class1.server.ca.pem') ]
};
var server = https.createServer (options, function (req, res) {
res.setHeader("Access-Control-Allow-Origin", "https://domain.tld");
res.writeHead (200);
res.end ("Nothing to see here :o");
});
var socketio = require ('socket.io').listen (server);
server.listen (12457); |
Als ik de server start, en via socket.io probeer te verbinden krijg ik dus die foutmelding. Maar als ik de headers op haal van de HTTPS server, dan krijg ik het volgende;
code:
1
2
3
4
| HTTP/1.1 200 OK => Access-Control-Allow-Origin => https://domain.tld Date => Fri, 27 Jun 2014 12:18:45 GMT Connection => close |
Waarbij de headers wel gewoon zijn door gevoerd.
De client maakt verbinding d.m.v. de secured parameter + het gebruikt van https:// voor het domein naam.
code:
1
| var socket = io.connect ('https://domain.tld:12457', {secure: true}); |
De statische HTML pagina's en alle bij hoorende bestanden, zijn op het zelfde domein geplaatst (https://domain.tld).
Is er misschien iemand die me een schop in de goede richting kan geven?
Alvast bedankt!