2015-07-30 1 views
10

Lors de tests sur Windows 10, nous avons constaté de nombreuses incompatibilités avec les navigateurs que je n'avais jamais vues auparavant avec les versions antérieures de Windows. Certains navigateurs fonctionneraient, mais d'autres signaleraient ERR_SPDY_PROTOCOL_ERROR. Ma recherche rapide de ce problème a montré que je n'étais pas seul.Désactivation de HTTP/2/SPDY dans HTTP.SYS et IIS sous Windows 10

Mon application utilise WWSAPI et HTTP.SYS avec HTTPS (TLS). Est-ce que quelqu'un sait comment désactiver SPDY/HTTP/2 dans WWSAPI (qui utilise HTTP.SYS) sur Windows 10? J'aimerais également obtenir une liste complète de Windows 10 des paramètres de registre pour HTTP.SYS.

Voir ci-dessous pour ma réponse à cette question. J'espère que cela aide les autres aussi.

Mark

+2

Ceci est un site de Q & A. Donc, si vous avez quelque chose qui est sur le sujet pour StackOverflow et n'a pas encore reçu de réponse, postez une question où vous formulez le problème que vous aviez initialement, puis postez une réponse à cette question où vous décrivez la solution. – Michael

+0

En dehors de la désactivation de HTTP/2, j'aimerais comprendre pourquoi votre WWSAPI génère ERR_SPDY_PROTOCOL_ERROR dans (je présume) Chrome. Avez-vous un échantillon WWSAPI qui montre que cela se produit? –

+0

C'est une erreur de chrome. Nous le voyons actuellement dans Opera, Chrome et Vivaldi. Dans notre cas, parce que je pense que quelqu'un envoie un signal, nous fournissons http2 quand ce n'est pas le cas. –

Répondre

18

EDIT: la désactivation de HTTP/2 va ralentir de manière significative la vitesse de votre site, ce n'est pas une solution permanente. Le problème a été provoqué par notre webapp envoyant un mauvais entête d'authentification au serveur.

Pour désactiver HTTP/2, voir ci-dessous.

(OP a donné une réponse utile, mais la question que je déplacé la réponse.):

j'ai travaillé autour de mon problème HTTP/2 par la configuration de Windows 10 HTTP.SYS dans le Registre pour désactiver HTTP/2. Étant donné que je n'ai pas trouvé l'information partout, j'ai pensé que je partagerais ma solution à ce problème ici aussi. Je voudrais cependant trouver un moyen de le faire via WWSAPI.

Si j'éteins le soutien SPDY dans le navigateur client, il fonctionnerait, mais je voulais désactiver cette option à côté serveur (HTTP.SYS sous Windows 10) afin qu'il ne négocierait pas HTTP/2 mais utiliserait le plus ancien compatible HTTP (S).

découvert deux nouveaux paramètres de Registre pour HTTP.SYS dans:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

  • EnableHttp2TlsREG_DWORD0
  • EnableHttp2CleartextREG_DWORD0

L'ajout de ces valeurs et à la fois la mise à 0 Windows 10 a entraîné HTTP/2/SPDY pas en cours de négociation et mes problèmes ERR_SPDY_PROTOCOL_ERROR sont partis sans nécessiter de modifications de la configuration du navigateur. Je ne suggère pas qu'il y ait quelque chose de mal avec Windows 10 HTTP/2, les problèmes peuvent être avec certains navigateurs.

Cela peut fonctionner pour IIS aussi, mais je ne l'utilise pas alors je n'ai pas essayé et dans tous les cas, il peut y avoir une meilleure façon de le faire dans IIS.

Espérons que cela aide aussi les autres.

Je peux confirmer cela aide pour IIS aussi, mais je devais redémarrer mon ordinateur.

+0

Après avoir défini les valeurs de registre et redémarré mon ordinateur, j'ai découvert que la cause première de mon problème SPDY était une réinitialisation de connexion provenant du serveur. –

+0

Cela a fonctionné pour moi! Merci beaucoup! – sshirley

+0

Bien que maintenant je me demande, Et si nous voulons éteindre SPDY mais pas HTTP/2? – sshirley