簡體   English   中英

Websocket 客戶端不適用於使用 python 代碼的 wss

[英]Websocket client not working for wss using python code

我正在使用 python 客戶端連接到托管在 azure 中的服務器。 我正在使用 websockets 進行連接。 我在 python 客戶端代碼中傳遞了身份驗證 header。 當我們給wss:// url 進行連接時,代碼不起作用。 錯誤說:

Handshake status 403 Forbidden

然而,當使用 postman 進行測試時,同樣的事情是有效的。

下面是用於連接 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 disabled 。

它僅在一種情況下工作:在應用服務中將 HTTPSOnly 設置為 false 並傳遞 ws:// uri 而不是 wss://

如我所見,您的 header 參數定義錯誤。 它需要像

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
                              )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM