(ASP.NET MVC) Http to Https 리다이렉트 방법

안녕하세요. :smile:

ASP.NET MVC에서 클라이언트가 Http로 접속했을 때 Https로 다시 Redirect 하려면 어떻게 해야 할까요?

제가 구성한 환경이 아니라서 수정하는데 제약이 조금 있습니다.

소스코드만으로 (Global, Home Index 라든지) 공통으로 처리할 수 있는 방법이 있을까요?

아래는 코드는 제가 해본 방법인데 Null Reference 에러입니다.

protected void Application_BeginRequest()
{
    if (FormsAuthentication.RequireSSL && !Request.IsSecureConnection)
    {
        Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"));
    }
}

읽어주셔서 감사합니다. :smile:

일단 자바스크립트로 처리했습니다.

if (location.protocol !== 'https:') {
    location.replace(`https:${location.href.substring(location.protocol.length)}`);
}

클라이언트영역(javascript)에서 처리하는 것은 좋지 못한 생각입니다. Postman 이나 기타 WebAPI 를 다룰수 있는 라이브러리를 통해 http 접근을 허용하게 되니까요.

MVC 몇 인진 잘 모르겠지만 Global.asax.cs에서 아래와 같이 시도해보세요.

    public override void Init()
    {
        base.Init();
        this.BeginRequest += MvcApplication_BeginRequest;
    }

    private void MvcApplication_BeginRequest(object sender, EventArgs e)
    {
        if (!Request.IsSecureConnection)
        {
            Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"));
        }
    }

저도 이런방식으론 해보지 않아 확실친 않은데, 로컬 IIS에서 해보니 되긴하네요 :sweat_smile:

좋아요 1

저는 리버스 프록시 단에서 간편하게 해 줬던 기억이 납니다
https://www.iis.net/downloads/microsoft/url-rewrite
이 iis 익스텐션을 설치했고요
http to https는 많이 쓰이는지라 이미 설정해놓은 것을 GUI 환경에서 제공하여
클릭 한번으로 됐던 기억이 납니다
그러면 web.config파일을 알아서 써 주는 방식입니다
소스코드만으로 할 수 있는 방법을 물어보셨는데 엉뚱한 답을 해서 죄송합니다
조금이나마 도움이 됐길 바라는 마음으로 답글 드립니다

좋아요 1