www. 있는거 없는거 차이점

김범식·2024년 5월 4일
1

웹사이트를 제작하는데 문제가 발생했다.

카페 24에서 서버와 example.com 이라는 도메인을 구매해서 사이트를 제작했는데 친구에게 사이트가 제대로 동작하지 않는다는 피드백을 받았다.

문제가 무엇인지 확인하기 위해서 웹페이지에 접속했는데 내 컴퓨터에서는 아무리 해도 에러를 재현할 수가 없었다.




# 원인

나중에 알아보니 친구는 www.example.com으로 접속했고 나는 example.com으로 접속하고 있었다.

이 때문에 backend에서는 도메인에 차이가 있다고 판단하고 cors에러를 발생 시켰던 것이었다.

http://www.example.com 을 구매한 적이 없는데!

두 개는 분명 다른 도메인이지만 카페24에서 http://example.com 도메인을 구매했다면 www.example.com으로도 접속이 가능하다. 도메인 연결 시 www 서브 도메인이 자동으로 설정되기 때문이다

💡 www 서브 도메인은 카페24 내에서 삭제할 수 있다!




해결

두 가지 방법으로 해결할 수 있는데 하나는 nginx를 활용하는 것이고 하나는 backend 서버에서 cors에 www.example.com을 추가하는 방법이 있다.

nginx활용

해당 프로젝트에서는 nginx를 reverse-proxy로 활용해서 frontend와 backend를 라우팅 했다.

만일 www.example.com으로 접속을 시도한다면 example.com으로 리디렉션하는 코드를 추가해 주었다.

/etc/nginx/conf.d/default.conf

# www가 붙었는지 확인하는 함
map $http_host $no_www {
    default        0;
    "~^www\.(?<domain>.+)$"    $domain;
}

server {
    listen 80;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

server {
        listen 443 ssl;
        server_name www.example.com example.com ;

				# www가 붙어있다면 www를 제거한 상태로 다시 접속시키기
        if ($http_host ~* ^www\.) {
        return 301 https://example.com$request_uri;
        }

				#... 나머지 코드
}

backend 설정

backend 를 django로 만들었다.

CORS_ALLOWED_ORIGINS 에 cors를 허용할 사이트를 추가해 주었다.

CORS_ALLOWED_ORIGINS = [
    "https://example.com",
    "https://www.example.com",
]



# 결론

카페24에서 도메인을 구매할 때 www. 서브 도메인이 자동으로 생성 되는 것을 이번에 처음 알게 됐다. 그리고 분명히 주소를 알려주어도 www.을 붙여서 접속하는 이용자가 생길 수 있다는 것도 이번에 깨달았다. cors에러는 끝이 없다..

profile
frontend developer

0개의 댓글