본문 바로가기
Node.js/이론 및 용어

[Node.js] 왜 url 이 두번 출력 되는 건데? feat. favicon.ico

by tokkiC 2022. 8. 16.

이전 생활코딩 node.js 강의에서 url.parse 가 더이상 사용되지 않는 기술로 사장되어

new URL 로 사용하게 됐다고 글을 썼었다. 아래는 그 글이다

https://tokkic.tistory.com/216 

 

생활코딩 node.js 10강 에러 원인, 대처법

생활코딩으로 node.js 강의를 따라 들으며 배우던 중 10강에서 에러가 뜨고 이해가 안되는 부분이 있어서 학습에 진행이 생겼다 혹시나 나와 같은 경우를 겪는 분들이 있을까해서 10강의 내용을 개

tokkic.tistory.com

그런데 강의를 들으며 배우던 중 이상한 점을 알게되었다

터미널로 node.js 를 실행하고 페이지의 링크를 클릭하여 url 의 쿼리를 추가하여 새로 전체 페이지를

갱신하지 않아도 일부만 불러와 갱신하는 법을 배우는 중에 console.log(queryData)를 하니

아래처럼 터미널에 로그가 한번이 아닌 2번이 찍혔다

URL {
  href: 'http://localhost:3000/?id=HTML',
  origin: 'http://localhost:3000',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:3000',
  hostname: 'localhost',
  port: '3000',
  pathname: '/',
  search: '?id=HTML',
  searchParams: URLSearchParams { 'id' => 'HTML' },
  hash: ''
}
URL {									// 아니 왜 로그에 찍히세요?
  href: 'http://localhost:3000/favicon.ico',   // 넌 누구니?
  origin: 'http://localhost:3000',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:3000',
  hostname: 'localhost',
  port: '3000',
  pathname: '/favicon.ico',						// 누구세요? 파비콘
  search: '',									// 쿼리 부분이 비었네?
  searchParams: URLSearchParams {},				// id 가진 부분도 비었네?
  hash: ''
}

왜이런지, 파비콘은 뭔지, 스택 오버플로우의 글들을 찾아보니...

파비콘은 다음과 같이 브라우저의 탭에서 보여주는 사이트의 아이콘을 말한다고 한다

아 이거 좋지 필요하지! 나처럼 탭 20개 이상 띄워놓는 사람들에겐 필수기능이지!

그래 파비콘이 너였구나

근데 2번이나 로그에 찍힌건 링크 한번에 내가 2번 요청을 했다는 건데 뭐지?

그 답은 스택 오버플로우에서 답을 찾을 수 있었다

https://stackoverflow.com/questions/4269695/do-i-need-to-have-a-favicon-on-my-site-how-do-i-get-rid-of-the-errors-i-see-in

 

Do I need to have a favicon on my site? How do I get rid of the errors I see in my apache log?

I keep seeing favicon warnings in my apache log. How do I get rid of those? Do I have to have a favicon for my site?

stackoverflow.com

원본 답변
구글 번역기님의 도움!

아하 그러니까 내가 요청한 쿼리 외에도 /favicon.ico 을 받아오려고 자동으로 요청을 하나 더 하는 거였다!

파비콘을 쓰지 않아서 웹브라우저의 파비콘 요청을 막으려면 막을 수 있다지만

어떤 예외 상황이 생길지 모르므로 막기보다는 0바이트의 파비콘 파일을 만들어 빈 파비콘을 불러 쓰게하는것이

예상치 못한 에러를 막을 수 있다고 한다

별 내용은 없는데 정리해보니 꽤나 길다
console.log(queryData) 는 한번만 쳤는데도
URL 이 두 번이나 출력 되었다. 자세히보면 다른데, 두번째로 찍힌 요청의 URL 은 파비콘을 불러오기 위한 것이었다. 그래서 search 부분도 비었고, 그냥 파비콘의 경로를 요청하고 있다

댓글