안녕하세요.
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://"));
}
}
읽어주셔서 감사합니다.
1개의 좋아요
일단 자바스크립트로 처리했습니다.
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에서 해보니 되긴하네요
1개의 좋아요
더덕구이
6월 8, 2021, 4:57오전
4
저는 리버스 프록시 단에서 간편하게 해 줬던 기억이 납니다
이 iis 익스텐션을 설치했고요
http to https는 많이 쓰이는지라 이미 설정해놓은 것을 GUI 환경에서 제공하여
클릭 한번으로 됐던 기억이 납니다
그러면 web.config파일을 알아서 써 주는 방식입니다
소스코드만으로 할 수 있는 방법을 물어보셨는데 엉뚱한 답을 해서 죄송합니다
조금이나마 도움이 됐길 바라는 마음으로 답글 드립니다
1개의 좋아요