2014-06-05 8 views
15

Ich verwende node und socket.io, um eine Chat-Anwendung zu schreiben. Es funktioniert gut in Chrome, aber Mozilla gibt einen Fehler, um die Cross-Origin-Anfragen zu aktivieren.Socket.io + Node.js Ursprungsübergreifende Anforderung blockiert

Ursprungsübergreifende Anforderung blockiert: Die Richtlinie "Gleiche Herkunft" lässt das Lesen der Remote-Ressource unter http://waleedahmad.kd.io:3000/socket.io/?EIO=2&transport=polling&t=1401964309289-2&sid=1OyDavRDf4WErI-VAAAI nicht zu. Dies kann behoben werden, indem Sie die Ressource in dieselbe Domäne verschieben oder CORS aktivieren.

Hier ist mein Code zum Starten des Node-Servers.

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server), 
    path = require('path'); 
server.listen(3000); 

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/public/index.html'); 
}); 

Auf der Client-Seite.

var socket = io.connect('//waleedahmad.kd.io:3000/'); 

Skript-Tag auf HTML-Seite.

<script type="text/javascript" src="//waleedahmad.kd.io:3000/socket.io/socket.io.js"></script> 

Ich verwende auch. Htaccess-Datei im App-Stammverzeichnis. (waleedahmad.kd.io/node).

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 
+0

Haben Sie das jemals funktioniert? Wenn ja, was war Ihre Lösung? – denaje

Antwort

20

können Sie versuchen, origins Option auf der Server-Seite zu setzen Cross-Origin-Anfragen zu ermöglichen:

io.set('origins', 'http://yourdomain.com:80'); 

Hier http://yourdomain.com:80 ist der Ursprung Sie von Anfragen zulassen möchten.

können Sie mehr über origins Format mit Ihrem CORS here

+0

dies funktionierte für mich danke – Prozi

1

Dies könnte ein Problem sein, Zertifizierung mit Firefox, die nicht unbedingt etwas falsch gelesen. Firefox CORS request giving 'Cross-Origin Request Blocked' despite headers

Ich stieß auf genau das gleiche Problem mit Socketio und Nodejs CORS Fehler in Firefox werfen. Ich hatte Certs für * .myNodeSite.com, aber ich referenzierte die LAN-IP-Adresse 192.168.1.10 für Nodejs. (Die WAN-IP-Adresse kann ebenfalls den gleichen Fehler verursachen.) Da das Cert nicht mit der IP-Adressreferenz übereinstimmt, hat Firefox diesen Fehler ausgelöst.

20

Simple Server-Side Fix

var io = require('socket.io')(server, { origins: '*:*'}); 

oder

io.set('origins', '*:*'); 

oder

io.origins('*:*') // for latest version 

* allein nicht die mich herunternahm Kaninchen Löcher nicht funktioniert.

+0

Ich benutze die neueste Version und es ist nicht, es gibt mir Verbindung verweigert Fehler – gamer

+0

@gamer vielleicht arbeiten durch alle ersten Prinzipien dann nach oben, zum Beispiel, ist meine Firewall den Port blockiert? Kann ich meinen Server usw. anpingen? –

Verwandte Themen