2016-08-12 2 views
1

Этот вопрос, вероятно, задавали тысячу раз, но я до сих пор не могу найти решение ..HTTPS перенаправление работает локально, а не на лазурном

У меня есть приложения .NET, который, когда выполняется локально, перенаправляет с HTTP на HTTPS , Но при развертывании в Azure Web App перенаправление не будет работать.

Основываясь на нескольких сообщениях в форуме, мое перенаправление выполняется с помощью правила в файле Web.config. Ниже вы видите этот файл развернут на лазури (я проверил с FTP)

<system.webServer> 
    <staticContent> 
     <remove fileExtension=".woff" /> 
     <mimeMap fileExtension=".woff" mimeType="application/font-woff" /> 
     <remove fileExtension=".woff2" /> 
     <mimeMap fileExtension=".woff2" mimeType="font/woff2" /> 
     <remove fileExtension=".json" /> 
     <mimeMap fileExtension=".json" mimeType="application/json" /> 
    </staticContent> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <rewrite> 
     <rules> 
     <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
      <add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" /> 
      </conditions> 
      <action type="Redirect" url="https://{C:1}/{R:1}" redirectType="Permanent" /> 
     </rule> 
     <rule name="static dist files" stopProcessing="true"> 
      <match url="^(.+)$" /> 
      <conditions> 
      <add input="{APPL_PHYSICAL_PATH}dist\{R:1}" matchType="IsFile" /> 
      </conditions> 
      <action type="Rewrite" url="/dist/{R:1}" /> 
     </rule> 
     <rule name="index.html as document root" stopProcessing="true"> 
      <match url="^$" /> 
      <action type="Rewrite" url="/dist/index.html" /> 
     </rule> 
     </rules> 
     <!--<outboundRules> 
     <rule 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> 

Этого Web.config файл является результатом преобразования на оригинальном Web.config файл, так как локально, порт для HTTPS установлен в 44362, и для этого в Web.config используется локально немного отличается:

<rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
     <add input="{HTTP_HOST}" pattern="([^/:]*):[^/]*?" /> 
     </conditions> 
     <action type="Redirect" url="https://{C:1}:44362/{R:1}" 
      redirectType="Permanent" /> 
    </rule> 

локально Everythings работает отлично. Перенаправление выполняется в одно мгновение. Но при развертывании в лазурном веб-приложении перенаправления не происходит. Так «---.azurewebsites.net» не automattically перенаправление на «https://---.azurewebsites.net»

я могу видеть, однако, что он достигает правило тэ, так как название вкладки браузера переименовывает на мгновение во имя этого править.

Если кто-то заметил глупую ошибку в этом коде, сообщите мне.

С уважением,

ответ

2

Там есть расширение доступно в App Azure Service, которая делает это для вас автоматически.

Эти маршруты могут меняться по мере того, как Azure Portal изменяется, но он действует с 2016-08 года.

  1. Перейти к вашему Службе приложений на Лазурном портале.
  2. Нажмите «Инструменты» в верхнем меню.
  3. В разделе «Разработка» нажмите «Расширения».
  4. В лезвии Расширения нажмите «Добавить» вверху.
  5. В диалоговом окне «Выбор расширений» выберите «Перенаправить HTTP на HTTPS».
  6. Нажмите ОК или что-нибудь еще до его сохранения.

После этого весь ваш HTTP-трафик будет перенаправлен на HTTPS без каких-либо изменений.

+0

Я не знал этого, спасибо, что указал. – Andries

0

Я использовал

<rewrite> 
    <rules> 
    <rule name="Redirect to https"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off" /> 
     <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
    </rule> 
    </rules> 
</rewrite> 

вполне успешно в лазури

Смежные вопросы