let previousUrl = '/test.do?name=kim';
new URL(location.host+previousUrl).searchParams;
이전 페이지의 url에서 파라미터를 가져오기 위해 작성한 코드이다.
URL 객체를 생성하기 위해 location.host 를 사용한 것인데 에러가 발생했다.
Failed to construct 'URL': Invalid URL TypeError: Failed to construct 'URL': Invalid URL
로컬에서는 문제가 없었는데 서버에 올리니 type error가 난다.
확인 결과 URL 생성자의 매개변수로 들어가는 url에 http:// 즉, 프로토콜이 포함되어 있지 않아서 발생한 에러였다.
localhost는 왜 주소에 프로토콜이 없어도 괜찮은거지?
일단 location 객체에 대해 정리를 하고 넘어가야겠다.
location 객체는 전역 객체이면서 window 객체의 프로퍼티이므로 window.location 혹은 location 으로 호출하여 사용할 수 있다.
location.href | 전체 url ex) https://www.naver.com/ |
location.protocol | url의 프로토콜 ex) https: |
location.host | port를 포함한 host ex) localhost:8080 |
location.hostname | port를 제외한 host ex) localhost |
location.port | port 번호 ex) 8080 |
location.search | url의 queryString 즉, 물음표 뒤에 오는 문자열 ex) ?name=kim |
location.origin | url의 protocol, host, port ex) http://localhost:8080 |