2016-10-14 1 views
2

Kann programmgesteuert überprüft werden, ob eine WebSocket-Verbindung mit einer 403-Antwort fehlgeschlagen ist? Zum Beispiel mit dem folgenden Servercode:Ist es möglich, nach WebSocket 403-Antworten zu suchen?

package main 

import (
    "errors" 
    "io" 
    "log" 
    "net/http" 

    "golang.org/x/net/websocket" 
) 

func main() { 
    handler := websocket.Handler(func(ws *websocket.Conn) { 
     io.Copy(ws, ws) 
    }) 
    handshake := func(conf *websocket.Config, req *http.Request) error { 
     if req.URL.Path == "/sekret" { 
      return nil 
     } 
     return errors.New("Oops!") 
    } 
    server := &websocket.Server{ 
     Handshake: handshake, 
     Handler: handler, 
    } 
    log.Fatal(http.ListenAndServe(":8080", server)) 
} 

und die folgenden Beispiels JS-Verbindung, die eine 403-Antwort auslöst:

var ws = new WebSocket("ws://localhost:8080/something"); 
ws.onerror = console.log; 

Die Fehlerreaktion ist ein Event mit Typ "error". Auf der anderen Seite löst der folgende JS-Code ein net::ERR_CONNECTION_REFUSED (zumindest auf Chrom):

var ws = new WebSocket("ws://localhost:8081/something"); 
ws.onerror = console.log; 

Das Fehlerereignisobjekt das gleiche fast genau aussieht. Gibt es eine Möglichkeit, Fehlertypen in WebSocket-Verbindungen von der Clientseite zu unterscheiden? (Ich bin für 403 Antworten speziell auf der Suche, so kann ich den Benutzer alarmieren besondere Maßnahmen zu ergreifen.)

Antwort

2

Offenbar it's deliberate:

Mein Verständnis ist, dass aus Gründen der Sicherheit, WebSocket Fehlerzustände sind ziemlich eingeschränkt Beschränken Sie die Fähigkeit von böswilligem JS, ein internes Netzwerk zu untersuchen.

Verwandte Themen