Lorsque j'ai ajouté le code de réécriture d'URL dans web.config, puis que je l'ai publié dans Azure. il redirigera automatiquement vers https même si j'essaie d'accéder à un site Web avec http.
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}"/>
</rule>
</rules>
</rewrite>
Mais lorsque je lance le même code sur ma machine locale, l'erreur ci-dessous est générée.
Ce site ne peut pas fournir une connexion sécurisée
Comment puis-je résoudre l'erreur ci-dessus lorsque j'exécute le code ci-dessus sur mon ordinateur local?
Personnellement, je mets cette configuration de réécriture dans Web.Release.config précisément parce que c’est un peu délicat de la faire fonctionner localement.
Le problème est que IIS Express exposera HTTP et HTTPS sur des ports différents. Par conséquent, si vous redirigez de http://localhost:1234
vers https://localhost:1234
, cela ne fonctionnera tout simplement pas, car IIS Express expose HTTPS sur quelque chose comme https://localhost:44300
.
Vous pouvez activer SSL/TLS sur IIS Express (et vous devriez le faire), mais je ne laisserais la règle de réécriture que pour le mode de publication.
Voici un exemple de fichier Web.Release.config:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
<system.webServer>
<rewrite xdt:Transform="Insert">
<rules>
<!-- Redirects users to HTTPS if they try to access with HTTP -->
<rule
name="Force HTTPS"
stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/>
</conditions>
<action
type="Redirect"
url="https://{HTTP_Host}/{R:1}"
redirectType="Permanent"/>
</rule>
</rules>
<outboundRules>
<!-- Enforces HTTPS for browsers with HSTS -->
<!-- As per official spec only sent when users access with HTTPS -->
<rule
xdt:Transform="Insert"
name="Add Strict-Transport-Security when HTTPS"
enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
Notez que j'ajoute également HSTS ici. Il insère l'élément <rewrite>
dans Web.config en mode Publication. L'élément <system.webServer>
existe déjà dans Web.config, sinon je l'insérerais.
Vous devrez configurer Visual Studio Server pour qu’il soit utilisé avec HTTPS . Veuillez suivre ce lien pour plus de détails:
HTTPS avec le serveur de développement ASP.NET intégré à Visual Studio
J'ai résolu ce problème avec l'ancienne version du navigateur Web Chrome.
Voici la liste des anciennes versions de chrome où vous pouvez le télécharger et l'installer.
60.0.3112.90 - pour Ubuntu est la version qui fonctionne parfaitement pour moi.
C’est peut-être un peu plus lent que les nouvelles versions mais j’ai trouvé que c’était plutôt bon pour la production