2016-10-14 7 views
2

WebSocket接続が403応答で失敗したかどうかをプログラムで確認することはできますか?例えば、次のサーバーのコードで:WebSocket 403の応答を確認することはできますか?

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)) 
} 

及び403の応答をトリガする次のサンプルJS接続:

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

エラー応答がタイプ"error"Eventあります。一方、次のJSコードはnet::ERR_CONNECTION_REFUSED(少なくともChromeで)をトリガに:

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

エラーイベントオブジェクトはほとんど同じに見えます。 WebSocket接続のエラータイプをクライアント側から区別する方法はありますか? (私は、特に403の応答を探していますので、私は特別な行動を取るようにユーザーに警告することができます。)

答えて

2

はどうやらit's deliberate

私の理解では、セキュリティ上の理由から、WebSocketのエラーステータスがかなりに制限されていることです悪質なJSが内部ネットワークを調査する能力を制限します。

関連する問題