2017-04-06 368 views
13

HTTP/2服務器和昨天啓用我注意到,在iPhone(IOS 10.2)不與錯誤加載某些資源加載一些資源。當我將Iphone連接到Mac時,在控制檯中沒有錯誤,但是隻是由於某些請求導致了該錯誤的迷惑性。有趣的事情可能是這樣的事實,即未加載的資源是真實域的子域(CNAME是正確的)。網站位於https上。 服務器是Windows服務器2016年Safari瀏覽器將不通過HTTP/2

編輯: 我們解決了這個問題,子域,但還是有來自同一個域不與任何迴應響應請求。

我知道IOS> 9.3支持HTTP/2時加載資源通過HTTPS但東西它不工作的資源都不是域的一部分,可以幫助解決這個問題,但我不知道怎麼辦。

我知道,可能問題是HTTP/2協議相關的,因爲我的Android原生appliacation也停止了與錯誤的工作:java.io.IOException: stream was reset: PROTOCOL_ERROR。我通過強制我的應用程序使用http/1來解決這個問題。現在工作。但如何解決iPhone Safari的問題?

我使用ASP.NET Web窗體作爲後端(支持http2因爲ASP.NET 4.6我使用的)。

+0

有趣的問題,你到了那裏。 PS:格式化。 – Feathercrown

+0

您的SSL證書是否僅針對真實域頒發,還是針對子域的通配證書? –

+0

是的,並且適用於子域名,但我最近注意到某些實際域(不是子域名)頁面無法加載。如果我打開的頁面在Chrome或Firefox中不起作用,我會得到回覆(儘管http 1.1)響應。在Chrome上的Mac上工作的頁面也可以工作並返回http2響應。它有可能是我的網站上的東西阻止返回http2響應?或者也許有IIS的問題,可以降低對同一頁面的請求? –

回答

1

看來解決方案已經找到。經過幾天的調查禁用動態內容壓縮幫助。

enter image description here

0

答案已經在這裏正確的弗拉多Pandžić提供以上。 我無法發表評論,因爲我是這個網站的新成員,但我想添加一些我發現的東西。

小於版本11的IOS不支持HTTP/2。但!如果頁面太大並且被壓縮,它會卡住。我不確定截斷是什麼,但是如果你打開一個有動態壓縮的小頁面(Gzip或其他),它可以正常工作。 ASP或PHP等,並不重要。一旦頁面達到需要多次往返才能提取數據的壓縮數據大小,Safari就會得到它的內褲。

它會逐字地進入一個無限循環,用請求錘擊您的服務器。我看到數以千計的頁面點擊,而Safari只是卡在一個空白的白色屏幕上。

對我來說,問題是,在你的整個網站禁用動態壓縮將導致從谷歌懲罰移動友好。谷歌希望你壓縮,但你必須禁用它的Safari,這很糟糕。

我的這個解決方案是使整個網站上的動態壓縮,但我用web.config文件來禁用它,我知道可能是相當大的規模的特定頁面。

<location path="large-page.aspx"> 
    <system.webServer> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
</location> 

祝你好運!

馬特