문제

사이트의 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. 오류 페이지에서 -> 403.4 오류에서 -> HTTPS 사이트로 리디렉션

  3. 오류 페이지 -> 기능 설정 편집...-> 로컬 요청에 대한 자세한 오류 및 원격 요청에 대한 사용자 정의 오류 페이지 설정

추가 코드 줄이 필요하지 않다는 장점이 있습니다.단점은 절대 URL로 리디렉션된다는 것입니다.

깔끔한 방법은 http -> https의 URL 구성표만 변경하고 다른 모든 항목은 동일하게 유지합니다.브라우저 문제가 없도록 서버 측에 있어야 합니다.

JPPinto.com에는 단계별 지침 서버측 리디렉션 대신 javascript(HttpRedirect.htm)를 사용한다는 점을 제외하고는 이 작업이 수행되는 방법에 대해 설명합니다.어떤 이유로 기본적으로 켜져 있는 '친숙한 HTTP 오류 메시지 표시'를 활성화한 경우 IE에서 자바스크립트를 실행할 수 없습니다.스크립트의 또 다른 점은 FF 또는 Chrome에서도 경로 리디렉션이 작동하지 않는다는 것입니다.스크립트는 항상 루트로 리디렉션됩니다.(경로로 리디렉션해야 하기 때문에 뭔가 놓쳤을 수도 있습니다.)

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

OpsanBlog에는 ASP 스크립트 및 지침 IIS6에서 잘 작동합니다.

IIS7에서 이 방법을 사용하면 몇 가지 문제가 발생했습니다.사용자 인터페이스 문제는 주로 IIS7을 사용하면 뭔가를 놓치기 쉽기 때문입니다.

  • 먼저 ASP를 웹 서버 역할 기능으로 설치해야합니다.
  • 둘째, 가상 디렉토리를 사용하는 것은 IIS7에서 예상대로 작동하지 않았으며 이것을 디버깅하려고 시도하지 않았습니다.대신 파일을 사이트의 루트 폴더에 넣고 403.4 오류 페이지에서 URL '/sslredirect.asp'를 사용하여 참조했습니다.
  • 마지막으로 가장 까다로운 부분은 SSLRedirect.asp에 SSL을 적용해서는 안 됩니다..그렇지 않으면 403.4 오류가 발생합니다.이렇게 하려면 IIS7 '콘텐츠 보기'에서 파일을 선택하고 '기능 보기'로 전환하여 단일 파일에 대한 SSL 설정을 편집하고 'SSL 필요' 확인란을 비활성화할 수 있습니다.

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

글로벌.asax

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 리디렉션과 같은 의미라고 생각합니다.다양한 서버 및 언어에 대한 구성 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top