Insecure XMLHttpRequest EndPoint
개요
https가 적용된 Amplify에서 https가 적용되지 않은 ELB를 통해 EC2에 데이터를 전송할 때 일어난 상황이다. 처음에는 HSTS 설정이 되어있는 줄 알고 브라우저에서 http를 치고 들어가면 되겠다 싶었으나 데이터 전송에 실패해 어떻게 전송할까 고민에 빠졌다. 상황은 다음과 같이 Insecure XMLHttpRequest endpoint라는 경고가 뜨거나
alert 창에 unKnown ContentType 이라는 메시지가 발생한다.
어떻게 해결해볼까
개요에서 언급한 것 처럼 처음엔 Amplify 쪽에서 데이터를 보낼 때 https가 적용되지 않은 채로 데이터를 전송하고 있는 줄 알았지만 ELB 설정을 들여다보니 https 설정이 아직 안 걸린 채로 동작하고 있었다. 제일 좋은 방법은 ELB에 https를 받아들이게 설정한다던지 https를 허용해준다던지 하는 방법이지만 상황이 그러지 못하니 Amplify 쪽에서 데이터를 보낼 때 http로 보내면 되지 않을까 싶어 브라우저 레벨에서 건드릴 수 있는 방법이 무엇이 있을까 찾게 되었다.
방법 1, Chrome의 HSTS 설정
처음에는 chrome에서 HSTS 설정이 잡혀서 데이터 전송이 안 되는 건가 싶어서 chrome의 설정을 건드려보기로 했다. 방법은 크롬의 url 입력창에 chrome://net-internals/#hsts를 입력하면 아래와 같은 화면이 나올 텐데 Delete domain Security polices 항목을 찾아서 HSTS 적용 해제할 도메인을 입력해서 삭제하면 된다.
이 방법은 데이터 전송에 성공하진 못했다
방법 2, Chrome 안전하지 않은 콘텐츠 허용
유효하지 않은 데이터를 보내서 블락당하는 건가 싶어서 데이터를 보내는 중간에 유효하지 않은 데이터로 강제적으로 변환하는 방법이 있지 않을까 싶어서 조사해봤다. 다음과 같이 설정했다.
- chrome 설정 > 개인정보 및 보안 > 사이트 설정
- 위 경로까지 접속했으면 지금까지 접속했던 사이트 정보가 보일 것이다.
- 여기서 설정을 바꿔줄 도메인을 확인하고 오른쪽에 화살표 모양을 누른다.
- 이후 아래로 스크롤한 뒤 다음과 같이 안전하지 않은 콘텐츠를 차단을 허용으로 바꿔주자
위와 같이 설정하고 데이터를 전송하게 되면 console 창에서 나타나는 로깅 메시지의 레벨이 바뀌면서 데이터 전송에 성공하게 된다.