2017-04-06 19 views
13

Http/2 được bật trên máy chủ và hôm qua tôi nhận thấy rằng trên Iphone (IOS 10.2) không tải một số tài nguyên có lỗi: failed to load resource:connecting to server is not possible. Khi tôi kết nối Iphone với Mac không có lỗi trong giao diện điều khiển nhưng chỉ đơn giản là kết quả của một số yêu cầu kết quả imidiatelly trong lỗi đó. Điều thú vị có thể là thực tế là các tài nguyên không được tải là tên miền phụ của miền thực (CNAME đúng). Trang web trên https. Server là Windows server 2016.Safari sẽ không tải một số tài nguyên qua http/2

EDIT: Chúng tôi giải quyết vấn đề subdomain này, nhưng vẫn còn yêu cầu từ cùng một tên miền mà không được đáp ứng với bất kỳ phản ứng.

Tôi biết IOS> 9.3 hỗ trợ http/2 khi tài nguyên được tải qua https nhưng điều mà tài nguyên không hoạt động không thuộc miền đó có thể giúp giải quyết vấn đề này nhưng tôi không biết làm cách nào.

Tôi biết rằng có thể sự cố liên quan đến giao thức http/2 vì sự cố gắng bản địa Android của tôi cũng ngừng hoạt động với lỗi: java.io.IOException: stream was reset: PROTOCOL_ERROR. Tôi giải quyết vấn đề đó bằng cách buộc ứng dụng của tôi sử dụng http/1. Bây giờ làm việc. Nhưng làm thế nào để giải quyết vấn đề đó cho iphone safari?

Tôi đang sử dụng ASP.NET Web Forms làm phụ trợ (hỗ trợ http2 kể từ ASP.NET 4.6 mà tôi đang sử dụng).

+0

Sự cố thú vị bạn gặp phải ở đó. PS: Định dạng. – Feathercrown

+0

Chứng chỉ SSL của bạn chỉ được cấp cho miền thực hay chứng chỉ ký tự đại diện cho tên miền phụ? –

+0

Có, và hoạt động cho các tên miền phụ nhưng gần đây tôi nhận thấy rằng một số trang trong miền thực (không phải tên miền phụ) không tải. Nếu tôi mở trang không hoạt động trong Chrome hoặc Firefox, tôi nhận phản hồi (mặc dù http 1.1). Các trang hoạt động trên Mac trên Chrome cũng hoạt động và trả về phản hồi http2. Có thể có điều gì đó trên trang web của tôi ngăn phản hồi http2 trả về không? Hoặc có thể có vấn đề với IIS mà không thể hạ cấp yêu cầu cho cùng một trang? –

Trả lời

1

Dường như giải pháp đã được tìm thấy. Sau vài ngày điều tra tắt nén nội dung động đã giúp.

enter image description here

0

Câu trả lời đã được Vlado Pandžić cung cấp ở trên. Tôi không thể nhận xét là tôi mới trên trang web này, nhưng tôi muốn thêm nội dung tôi đã tìm thấy.

IOS phiên bản 11 không hỗ trợ HTTP/2. NHƯNG! Nó sẽ bị kẹt nếu trang quá lớn và bị nén. Tôi không chắc chắn những gì cut-off là, nhưng nếu bạn mở một trang nhỏ có nén động (Gzip hoặc bất cứ điều gì) nó sẽ làm việc tốt. ASP hoặc PHP vv, không quan trọng. Khi trang đạt đến kích thước dữ liệu nén, yêu cầu nhiều chuyến đi khứ hồi để kéo dữ liệu, thì Safari nhận được các nút bấm của nó theo một cách dễ dàng.

Nó theo nghĩa đen sẽ đi vào vòng lặp vô tận, đóng búa máy chủ của bạn với các yêu cầu. Tôi đã nhìn thấy hàng nghìn lượt truy cập trang trong khi Safari chỉ bị kẹt trên một màn hình trắng trống.

Vấn đề đối với tôi, là việc tắt tính năng nén động trên toàn bộ trang web của bạn sẽ dẫn đến hình phạt từ Google đối với thân thiện với thiết bị di động. Google muốn bạn có nén trên, nhưng bạn phải vô hiệu hóa nó cho Safari, mà hút.

Giải pháp của tôi cho điều này là cho phép nén động trên toàn bộ trang web, nhưng tôi đã sử dụng tệp web.config để tắt nó cho các trang cụ thể mà tôi biết có thể có kích thước khá lớn.

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

Chúc may mắn!

Matt

Các vấn đề liên quan