Mixed Content 질문입니다.
본문
서버이전 전에는 전혀 문제가 없었는데, 서버 이전 후에 Mixed Content에러가 발생합니다.
이런, 저런 삽질하다가 다음과 같이 수정하니까 Mixed Content가 잡히긴 하는데요.
define('G5_DOMAIN', 'https://abc.com');
define('G5_HTTPS_DOMAIN', 'https://abc.com');
/*
www.sir.kr 과 sir.kr 도메인은 서로 다른 도메인으로 인식합니다. 쿠키를 공유하려면 .sir.kr 과 같이 입력하세요.
이곳에 입력이 없다면 www 붙은 도메인과 그렇지 않은 도메인은 쿠키를 공유하지 않으므로 로그인이 풀릴 수 있습니다.
*/
define('G5_COOKIE_DOMAIN', '.abc.com');
당연히 원래 설정은 다음과 같았습니다.
define('G5_DOMAIN', '');
define('G5_HTTPS_DOMAIN', 'https://abc.com');
아무튼, 위와 같이 config를 수정하니 Mixed Content는 잡히는데,
로그인할때 등 url에 타 도메인을 지정할 수 없습니다 라는 오류가 출력되는데...
혹시 고수님들, 뭐가 문제인지 짐작가시는 게 있다면 조언좀 부탁드립니다 ㅠ
서버환경 아파치2.4 php7.4 마리아디비 (이전 서버와 동일)
답변 1
ssl 인증서를 설치한 환경이 어떻게 되는지 모르겠지만,
최근 클라우드 플레어 ssl 인증서를 이용하면서 Mixed Content 관련 오류들이 좀 있었습니다.
클라우드 플레어 인증서를 이용하다 보니, 서버 자체에는 인증서가 없는 관계로
주소창은 https로 찍히지만, 실제 G5_URL 은 http로 잡히게 되더군요.
때문에 윗 질문처럼 G5_DOMAIN에 https로 지정하는 방법이 있겠지만, 저 같은 경우는 common.php 파일에 한 줄을 추가해서 해결을 했습니다.
common.php 윗쪽에
function g5_path() 함수의
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
윗 줄 아래에
$http = $_SERVER['HTTP_X_FORWARDED_PROTO'] ? $_SERVER['HTTP_X_FORWARDED_PROTO'].'://' : $http;
와 같이 $http 변수를 한번 더 정의해 줘서 해결을 했습니다.
ssl인증서 설치 환경에 따라 안될수 도 있으니,
먼저 에러가 나는 원인인 로그인 체크 시 넘어가는 url 값의 호스트가 http인지 https 인지 확인해 보시는 게 좋을 것 같습니다.