gpt4 book ai didi

javascript - 是否可以检查 WebSocket 403 响应?

转载 作者:行者123 更新时间:2023-11-29 21:14:25 28 4
gpt4 key购买 nike

是否可以通过编程方式检查 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 响应,因此我可以提醒用户采取特殊措施。)

最佳答案

显然 it's deliberate :

My understanding is that for security reasons, WebSocket error statuses are fairly restricted to limit the ability of malicious JS to probe an internal network.

关于javascript - 是否可以检查 WebSocket 403 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047813/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com