2016-06-18 251 views
3

我得到在連接到的WebSocket在Safari瀏覽器,在瀏覽器中剩餘它做工精細WebSocket的網絡錯誤:OSStatus錯誤-9807:無效的證書鏈

錯誤以下錯誤:

WebSocket network error: OSStatus Error -9807: Invalid certificate chain 

代碼:

var websocket = new WebSocket("wss://localhost:44300/websocketHome", "Room_123") 
+0

您使用的是自簽名證書嗎? – Cathy

+0

我遇到過類似的問題。只有https + safari –

回答

1

因此,我打算以一個警告開始回答:我不是WebSockets,瀏覽器,Safari或URL的專家。我提到這個的原因是我不知道爲什麼這個解決方案有效,我不知道爲什麼Safari的行爲方式如此。

我花了好幾個小時弄清楚爲什麼我的網站在Safari中不工作,但在其他瀏覽器中工作。它讓我氣憤,因爲我沒有時間處理這些垃圾。

從本質上講,你需要做的是替換此:

var websocket = new WebSocket("wss://localhost:44300/websocketHome", "Room_123") 

與此:

var websocket = new WebSocket("ws://localhost:44300/websocketHome", "Room_123") 

但不要踢自己呢,因爲你並沒有想象它時,它在工作Chrome和Firefox。 Safari似乎是執行URL協議部分的唯一瀏覽器,即本地主機連接的「ws」而不是「wss」。

基本上我沒有時間去研究Safari是否正確地遵循標準,但沒關係,因爲我會把它作爲Safari的另一個例子(Internet Explorer 2017)不必要地打破了牛羣,使網絡開發人員的生活變得困難。

如果蘋果想強制,其他瀏覽器不一樣,他們是歡迎這樣做的標準,但他們至少需要打印有用的錯誤,WebSocket的網絡錯誤:OSStatus錯誤-9807:無效的證書鏈不夠好。

編輯

這將是顯而易見的大多數人,但對於那些誰不專業的開發商,請確保您不會將此更改部署到生產環境。您希望使用wss協議進行製作,如果您的證書設置正確,那麼在Safari上應該可以正常工作。