2017-04-13 91 views

回答

0

我不確定您的請求是否有意義,即使它確實存在,是否有任何實現可以支持它 - 或者您可以依賴於可能的支持。

Connect on port 80 
Request Upgrade: TLS/1.x 

確定這位罰款。它基本上會要求通過端口80並通過http講TLS,並由RFC-2817定義。這是非常不尋常的,因爲標準只會通過https方案和端口443(或非標準端口8443)說TLS,但從理論上講,這將起作用。還請注意Connection標頭也必須設置爲Upgrade

Connect on port 80 
Request Upgrade: TLS/1.x 
Request Upgrade: h2c 

這是它開始變得棘手的地方。 h2c協議是一個不安全的HTTP/2連接(即沒有TLS),但是,與您的第一個標頭相結合,您要求這是通過TLS(通過HTTP btw允許多個標頭)。我想,從理論上講,這可能工作,類似於它是如何工作的下HTTP/1.1以上,除了HTTP/2 spec明確規定:

的「H2C」協議標識符描述了不使用協議TLS。支持HTTP/2通過TLS

實現必須在TLS [TLS-ALPN]使用協議協商。

因此,我會考慮上述連接違反規範,而不是確認升級。

Connect on port 80 
Request Upgrade: TLS/1.x 
Request Upgrade: websocket 

websocket spec對此不太清楚。它的狀態:

默認情況下,WebSocket協議使用端口80用於常規的WebSocket連接和隧道傳輸層安全(TLS)[RFC2818] WebSocket連接端口443。

也:

A | WSS | URI標識WebSocket服務器和資源名稱,並指示通過該連接的流量將通過TLS(包括TLS的標準優勢,如數據機密性和完整性以及端點身份驗證)進行保護。

但是沒有什麼可以看到禁止通過| ws | URI,甚至使用| wss |但是我會想象,因爲這沒有明確定義,所以不能保證這是否可行,或者連接是否安全。