我正在使用python客户端连接到在azure中托管的服务器。我正在使用websockets连接。我在python客户端代码中传递auth头。当我们为连接提供wss:// url时,代码无法工作。错误说:
Handshake status 403 Forbidden然而,当使用邮递员进行测试时,同样的事情也在起作用。
下面是连接到websocket服务器的代码片段:
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://
发布于 2022-08-14 09:45:27
正如我所看到的,您的头参数定义是错误的。它需要就像
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
)https://stackoverflow.com/questions/72892474
复制相似问题