Şu anda net::ERR_HTTP2_PROTOCOL_ERROR 200
Google Chrome'da bir hataya neden olan bir web sitesi üzerinde çalışıyorum . Tam olarak bu hatayı neyin provoke edebileceğinden emin değilim, sadece HTTPS'deki web sitesine erişirken ortaya çıktığını fark ettim. % 100 ilgili olduğundan emin olamıyorum, ancak javascript düzgün yürütülmesini engelliyor gibi görünüyor.
Örneğin, aşağıdaki senaryo gerçekleşir:
Web sitesine HTTPS'den erişiyorum
Https://publish.twitter.com üzerinden entegre edilen Twitter feed'im hiç yüklenmedi
Konsolda ERR_HTTP2_PROTOCOL_ERROR fark edebilirim
Twitter özet akışını yüklemek için kodu kaldırırsam hata kalır
Web sitesine HTTP ile erişirsem Twitter yayını görünür ve hata kaybolur
Google Chrome, hatayı tetikleyen tek web tarayıcısıdır: Hem Edge hem de Firefox'ta iyi çalışır. (Not: Safari ile denedim ve benzer bir kcferrordomaincfnetwork 303
hata var)
Hatada bu '200' sözü olduğundan ve 404/500 sayfasının hiçbir şey tetiklemediğinden sunucu tarafından döndürülen başlık ile ilgili olup olmadığını merak ediyordum.
Şey, hata hiç belgelenmedi. Google arama bana çok az sonuç veriyor. Dahası, çok yeni Google Chrome sürümlerinde göründüğünü fark ettim; hata v.64.X üzerinde açılmaz, ancak v.75 + (OS ne olursa olsun; Mac tho üzerinde çalışıyorum).
Bu noktada araştırılacak herhangi bir ipucu memnuniyetle takdir edilecektir!
Şimdiden teşekkürler.
Tristan
Düzenleme 1: Firefox'ta Web Sitesi Tamam ile ilişkili olabilir, ancak Safari'de olmayabilir (kCFErrorDomainCFNetwork hatası 303) hiçbir Chrome'da (net :: ERR_SPDY_PROTOCOL_ERROR)
Edit 2: Diğer araştırmalardan elde edilen bulgular şunlardır:
- 2XX yerine 404 döndürürse aynı sayfada hata oluşmaz
- hatası HTTPS sertifikasıyla yerel olarak açılmıyor
- Farklı bir sertifika kullanan farklı bir sunucuda hata (her ikisi de OVH'ler)
- PHP sürümü ne olursa olsun hata ortaya çıkar (5.6'dan 7.3'e
Düzenleme 3: İstendiği gibi, tüm web sayfası olan başarısız kaynak için döndürülen başlık aşağıdadır. Hata, HTTP başlığına (200) sahip her sayfada tetiklense bile, bu sayfalar her zaman istemcinin tarayıcısına yüklenir, ancak bazen bir öğe eksiktir (örnekte harici Twitter özet akışı). Ağ sekmesindeki diğer tüm öğelerin, belgenin kendisi hariç bir başarı getirisi vardır.
Google Chrome başlığı (hatalı):
Firefox üstbilgisi (hatasız):
curl --head --http2
Konsoldaki bir istek aşağıdaki başarıyı döndürür:
HTTP/2 200
date: Fri, 04 Oct 2019 08:04:51 GMT
content-type: text/html; charset=UTF-8
content-length: 127089
set-cookie: SERVERID31396=2341116; path=/; max-age=900
server: Apache
x-powered-by: PHP/7.2
set-cookie: xxxxx=0919c5563fc87d601ab99e2f85d4217d; expires=Fri, 04-Oct-2019 12:04:51 GMT; Max-Age=14400; path=/; secure; HttpOnly
vary: Accept-Encoding
Düzenleme 4: chrome: // net-export / ve https://netlog-viewer.appspot.com araçlarıyla daha derine inmeye çalışmak, isteğin bir RST_STREAM ile sona erdiğini söylüyor:
t=123354 [st=5170] HTTP2_SESSION_RECV_RST_STREAM
--> error_code = "2 (INTERNAL_ERROR)"
--> stream_id = 1
Ben okuduklarım için bu diğer yazı ", istemci isteğini iptal etmek istiyorsa, HTTP / 2'de, bir RST_STREAM gönderir. Sunucu bir RST_STREAM aldığında, böylelikle yanıtını durdurarak müşteriye VERİ çerçeveleri göndermeyi durduracak (veya indirme) Bağlantı hala diğer istekler için kullanılabilir ve iptal edilen istekle aynı anda gerçekleşen istekler / yanıtlar ilerlemeye devam edebilir. [...] RST_STREAM'ın istemciyi sunucuya gönderirse, isteğin tüm içeriği aktarılır ve istemciye ulaşır, bu da onu atar.Ancak, büyük yanıt içerikleri için, bir RST_STREAM göndermenin sunucuya bütünden önce gelmesi için iyi bir şansı olabilir yanıt içeriği gönderilir ve bu nedenle bant genişliği tasarrufu sağlanır. "
Açıklanan davranış gözlemleyebildiğim davranışla aynı. Ancak bu, tarayıcının suçlu olduğu anlamına gelir ve sonra neden biri aynı 200 başlık ve diğeri 404 (JS'yi devre dışı bırakırsam aynı şey olur) ile iki özdeş sayfada gerçekleştiğini anlamıyorum.