programing

IIS7: HTTP->HTTPS 클린

powerit 2023. 10. 10. 21:16
반응형

IIS7: HTTP->HTTPS 클린

HTTP:// 버전의 사이트로 이동하려는 모든 시도를 HTTPS:// 동등한 사이트로 리디렉션하는 깨끗한 방법이 있습니까?

가장 깨끗한 방법은 여기 IIS-aid.com 에 나와 있는 것과 같습니다.web.config일 뿐이므로 서버를 변경할 경우 403.4 사용자 지정 오류 페이지나 기타 특별한 권한으로 수행한 모든 단계를 기억할 필요가 없습니다.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

내가 찾은 가장 쉽고 깨끗한 해결책은

  1. SSL 설정 ->에 SSL이 필요합니다.

  2. In Error Pages -> On 403.4 error -> HTTPS 사이트로 리디렉션

  3. 오류 페이지 -> 기능 설정 편집에서...-> 로컬 요청의 경우 Detailed errors, 원격 요청의 경우 Custom error page 설정

추가적인 코드 라인이 필요 없다는 장점이 있습니다.단점은 절대 URL로 리디렉션된다는 것입니다.

클린웨이는 http -> http -> https에서 URL 스킴만 변경하고 다른 모든 것은 동등하게 유지합니다.브라우저 문제가 없도록 서버 쪽이어야 합니다.

JPPinto.com 에는 서버측 리디렉션 대신 javascript(HttpRedirect.htm)를 사용하는 것을 제외하고 이 작업이 수행되는 방법에 대한 단계별 지침이 있습니다.기본적으로 켜져 있는 'Show friendly HTTP error messages'가 활성화되어 있으면 어떤 이유로 IE에서 javascript를 실행할 수 없습니다.스크립트의 또 다른 점은 FF나 Chrome에서도 경로로의 리디렉션이 작동하지 않았다는 것입니다.스크립트는 항상 루트로 리디렉션됩니다.(아마도 제가 무언가를 놓쳤는지도 모릅니다. 경로로 리디렉션해야 하기 때문입니다.)

이러한 이유로 리디렉션에 ASP 페이지를 사용했습니다.단점은 물론 서버에서 기존 ASP를 활성화해야 한다는 것입니다.

OpsanBlog에는 IIS6에서 잘 작동하는 ASP 스크립트와 지침이 있습니다.

IIS7에서 이 방법을 사용하는 데 몇 가지 문제가 있었습니다.IIS7은 무언가를 놓치기 쉽기 때문에 대부분 사용자 인터페이스 문제가 발생합니다.

  • 먼저 웹 서버 역할 기능으로 ASP를 설치해야 합니다.
  • 둘째, IIS7에서 가상 디렉터리를 사용하는 것이 기대했던 것처럼 작동하지 않았고, 이를 디버그하려고 하지 않았습니다.대신 사이트의 root 폴더에 파일을 넣고 403.4 오류 페이지의 url '/SSLRedirect.asp'를 사용하여 참조하였습니다.
  • 마지막으로 가장 까다로운 부분인 SSLRedirect.asp에 대해 SSL을 적용해서는 안 됩니다.그렇지 않으면 403.4 오류가 발생합니다.이렇게 하려면 IIS7 'Content View'에서 파일을 선택하고 'Features View'로 전환하면 단일 파일의 SSL 설정을 편집하고 'Require SSL' 확인란을 비활성화할 수 있습니다.

IIS 관리자는 헤더에 파일 이름을 표시해야 합니다.

전역.축

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

기존 asp(인트라넷)를 사용하며 로그인이 필요한 페이지에서는 로그온 포함 파일이 리디렉션됩니다.

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

여기에는 물론 GET 또는 POST 데이터가 포함되지 않습니다.따라서 보안된 페이지로 다시 이동하는 것이 좋습니다.

제 생각에 '깨끗하게'라는 말은 300 방향 전환을 의미하는 것 같습니다.여기에 많은 서버와 언어를 구성할 수 있습니다.

언급URL : https://stackoverflow.com/questions/46347/iis7-http-https-cleanly

반응형