首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Websocket客户端不使用python代码为wss工作

Websocket客户端不使用python代码为wss工作
EN

Stack Overflow用户
提问于 2022-07-07 04:57:48
回答 1查看 400关注 0票数 0

我正在使用python客户端连接到在azure中托管的服务器。我正在使用websockets连接。我在python客户端代码中传递auth头。当我们为连接提供wss:// url时,代码无法工作。错误说:

代码语言:javascript
复制
Handshake status 403 Forbidden

然而,当使用邮递员进行测试时,同样的事情也在起作用。

下面是连接到websocket服务器的代码片段:

代码语言:javascript
复制
def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### closed ###")

def on_open(ws):
    print("Opened connection")

auth_str = "Authorization:Basic abgvrgfrbnfrfurfr"

if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("wss://uri.com/websocket",
                             header=[auth_str],
                              on_open=on_open,
                              on_message=on_message,
                              on_error=on_error,
                              on_close=on_close
                              )
    ws.run_forever(dispatcher=rel) 
    rel.signal(2, rel.abort)  
    rel.dispatch()

postman和python客户机中请求的请求头没有区别。不知道为什么python客户端说403 forbidden

它只在一个条件下工作:在app服务中将HTTPSOnly设置为false,并传递ws:// uri而不是wss://

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-14 09:45:27

正如我所看到的,您的头参数定义是错误的。它需要就像

代码语言:javascript
复制
ws = websocket.WebSocketApp("wss://uri.com/websocket",
                             header={ 'Authorization': 'Basic abgvrgfrbnfrfurfr' },
                              on_open=on_open,
                              on_message=on_message,
                              on_error=on_error,
                              on_close=on_close
                              )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72892474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档