2014-07-25 29 views
7

Używam node.js na porcie 8082 i Apache na porcie 80.Losowe Bad Request 400 błędy z Socket.io 1.0.6

wszystko działa poprawnie na chwilę i niż przeglądarce zacząć pojawiać komunikaty o błędach "400 złe żądanie", błędy CORS.

Serwer ustawia nagłówki CORS. Jak widać, używam również adaptera Redis.

var io = require('socket.io').listen(8082); 
io.adapter(redis({ host: '127.0.0.1', port: 6379 })); 
io.set('origins', 'domain.com:*'); 

Nie mogę powiedzieć, dlaczego czasami wszystko działa dobrze, czasami nie. Błąd występuje zawsze, gdy Socket.io spróbuje dokonać aktualizacji z pulowania na websocket.

Gdy korzystam z klienta od https://cdn.socket.io/socket.io-1.0.6.js, otrzymuję mniej błędów.

Kiedy używam lokalnego odwołania do pliku socket.io-1.0.6.js, błędy występują z większą częstotliwością. Nie można znaleźć wzorca błędu.

Po errosach restartuję serwer Node.js, wypróbuję kilka żądań, działa od dłuższego czasu, błędy. Czasami działa ponownie bez restartowania serwera.

Zapytanie nagłówki próbka próbka

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 
Cookie io=RjKzZ6Y1OTQeSEsPAAAL; SGM_DESENV=cb5ae798c2f6f5d3f38c6ed16a6e4696 
Host 200.238.251.79:8082 
Origin http://200.238.251.79 
Referer http://200.238.251.79/maximiliano/sgp/admin/custodiacompartilhada/add 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0 

nagłówki odpowiedzi

Access-Control-Allow-Credentials true 
Access-Control-Allow-Origin http://200.238.251.79 
Connection keep-alive 
Content-Length 101 
Content-Type application/octet-stream 
Date Fri, 25 Jul 2014 16:10:26 GMT 
Set-Cookie io=9OYcCmU24IyzrAS3AAAM 

komunikaty o błędach

NetworkError: 400 Bad Request - http://200.238.251.79:8082/socket.io/?EIO=2&transport=polling&t=1406304539856-2&sid=RjKzZ6Y1OTQeSEsPAAAL 

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://200.238.251.79:8082/socket.io/?EIO=2&transport=polling&t=1406304539856-2&sid=RjKzZ6Y1OTQeSEsPAAAL This can be fixed by moving the resource to the same domain or enabling CORS. 
+0

Używasz NewRelic? – Eddie

Odpowiedz

0

CORS nie pozwala wieloznaczny w nazwie domeny.

albo trzeba pozwolić ze wszystkich kategorii:

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

lub określić port:

io.set('origins', 'http://200.238.251.79:8082'); 

(wzywający na innym porcie zakłada CORS)

+0

To mogła być prawda, ale już tak nie jest. Zobacz checkRequest https://github.com/socketio/socket.io/blob/master/lib/index.js Pozwala on na stosowanie symboli wieloznacznych dla nazwy hosta lub portu. – Eddie

Powiązane problemy