Javascript 是否可以检查WebSocket 403响应?
是否可以通过编程方式检查WebSocket连接是否因403响应而失败?例如,使用以下服务器代码:Javascript 是否可以检查WebSocket 403响应?,javascript,websocket,Javascript,Websocket,是否可以通过编程方式检查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,
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”
。另一方面,下面的JS代码会触发一个net::ERR_CONNECTION_densed
(至少在Chrome上):
错误事件对象看起来几乎完全相同。是否有某种方法可以将WebSocket连接中的错误类型与客户端区分开来?(我特别寻找403个响应,因此我可以提醒用户采取特殊措施。)显然:
我的理解是,出于安全原因,WebSocket错误状态受到相当大的限制,以限制恶意JS探测内部网络的能力
var ws = new WebSocket("ws://localhost:8081/something");
ws.onerror = console.log;