asp.net mvc에서 파일을 제공 할 때 Chrome이 내 favicon.ico를 검색하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1003350

  •  05-07-2019
  •  | 
  •  

문제

MVC에 데이터베이스에서 이미지를 제공하는 컨트롤러가 있습니다.

편집하다: MVC에서 완전히 표준 수단에 대한 파일을 제공하는 경우에도 여전히 발생합니다.

내 이미지를 요청할 때마다 Google Chrome은 Favicon.ico를 검색합니다.

다른 것들에 대한 불필요한 토론을 피하기 위해 "나는 또한"나는 또한이 예제에서 캐싱을 신경 쓰지 않는다고 가정하자. 나는 항상 파일과 함께 HTTP 응답 200을 반환해야한다.

내 컨트롤러에서 다음을 반환합니다.

return File(fileBytes, contentType);

Fiddler 2를 검사 한 후 다음 응답이 생성됩니다.

HTTP/1.1 200 OK
캐시 제어 : 공개
내용 유형 : 이미지/gif
Etag : Oyu19wko+kehkyxzq2wxaa ==
서버 : Microsoft-IIS/7.0
X-ASPNETMVC-Version : 1.0
X-Aspnet-Version : 2.0.50727
X-powered-by : asp.net
날짜 : TUE, 2009 년 6 월 16 일 18:48:45 GMT
컨텐츠 길이 : 29344

이에 비해 이것은 Google 로고를 요청할 때 Google의 Fiddler의 응답입니다.

HTTP/1.1 200 OK
내용 유형 : 이미지/gif
최종 수정 : Wed, 2006 년 6 월 7 일 19:42:34 Gmt
날짜 : TUE, 2009 년 6 월 16 일 18:50:54 GMT
만료 : 수요일, 2010 년 6 월 16 일 18:50:54 GMT
캐시 제어 : public, max-age = 31536000
서버 : GWS
컨텐츠 길이 : 8706
나이 : 2

그러나 Chrome에서 내 이미지를 얻은 후 Chrome은 favicon.ico를 찾으려고 시도합니다. 그렇습니다 ~ 아니다 Google 로고를 요청한 후 시도해보십시오.

왜 이런 일이 일어나고 있는지 아이디어가 있습니까? HTML에 대한 나의 이해를 통해, 답변은 반응 헤더에 있어야합니다. 나를 바로 잡아주세요!

편집 2 : 많은 사람들이 문제를 완전히 오해 한 것 같습니다. 문제는 ~ 아니다 Favicon의 부족과 MVC의 오류 요청 - 콘텐츠 유형의 "텍스트가있는 웹 페이지와 달리 콘텐츠 유형의"image/jpeg "가있는 이미지 만로드 될 때 Favicon을 요청하는 데 문제가 있습니다. /html "!!

도움이 되었습니까?

해결책

이것은 MVC와 관련이 없습니다. 맞춤형 로그 서비스와 함께 WebForms를 사용하고 있으며이 게시물을 우연히 발견하여 왜 내 로그에 연속적인 '파일이 존재하지 않는'오류가 있는지 궁금해했습니다. 이것은 내 개발 기계에 위치하고 있으며 프로젝트에 favicon.ico 파일이 없으며, IE, Firefox 및 Google이 유죄 파티인지 확인하려고 시도했습니다.

Google Chrome에서 내 앱에 대한 모든 요청은 favicon.ico를 요청합니다.. 실제로 브라우저 로깅을 시작하여 실제로 범인 인 Googles 브라우저라고 판단했습니다. 당신을 귀찮게한다면 Google에 연락 할 것입니다. 나는 그것이 내 크롬을 감염시키는 새로운 트로이 목마가 아닌지 확인하고 싶었다.

다른 팁

실제 답변 : 알려진 검증 된 버그입니다. *(최근에 고정되었습니다! ... 어쩌면?)

Chrome에서 알려진 오랜 문제처럼 보입니다.http://crbug.com/39402

더 빨리 고정하려면 문제를 주연 시키십시오. 이 문제를 주연시키는 더 많은 사람들이 우선 순위를 높이고 더 빨리 고칠 수 있습니다.


**** 업데이트 1 *** : 올해 5 월 15 일 현재 (2013)-이 질문이 질문 한 지 4 년이 지난 지금 버전 29에서 문제가 해결 된 것 같습니다.http://crbug.com/39402#c47

모든 해킹과 해결 방법을 자유롭게 취소하십시오. :

**** 업데이트 2 (2015-01) *** : 동일한 문제 링크에 따르면 이는 여전히 일부 사용자에게 문제가됩니다. :/

파비콘이 있습니까? 그렇지 않다면 아마도 Chrome이 웹 사이트를 위해 매번 찾아 내려고하는 이유 일 것입니다. Google의 경우 이미 Favicon Cached가 있습니다.

당신이 할 수있는 한 가지는 MVC가 *.ico에 대한 요청을 무시하여 디버깅하는 동안 예외를 얻지 못하도록하는 것입니다.

다음과 같아야합니다.

routes.MapRoute("ignore-favicon", "{*path}", null, new {path = ".*/favicon\\.ico"});

그 URL 패턴은 모든 일과 일치하지만, 우리는 그것을 favicon.ico의 끝에서만 일치하도록 제한합니다. (나는 이것을 테스트하지 않았다)

나는이 문제를 잠시 뒤로 젖히고 추가하여 특정 경로를 무시함으로써 주위를 돌렸다.

routes.IgnoreRoute("{*favicon}", new { favicon = ".*/favicon\\.ico" });

Global.asax의 RegisterRoutes 방법으로.

Chrome은 자체 탭에 대한 Favicon을 요청하는 것으로 보입니다. 404S를 계속 얻었습니다 (내 Favicon은 다른 곳이므로 내 페이지를 알고 있기 때문에) 크롬이 Favicon 파일에 직접 요청을하는 Chrome이라는 것을 깨달을 때까지. 내가 추측하는 실제 파일로 다시 작성하는 것 외에는 실제 수정이 없습니다.

당신은 당신의 안에 이와 같은 것을 추가 할 수 있습니다 web.config 파일을 확인하십시오 favicon.ico 클라이언트에 캐시되며 매번 요청하지 않습니다.

<location path="favicon.ico">
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Cache-Control" value="public, max-age=31536000" />
             </customHeaders>
        </httpProtocol>
    </system.webServer>
</location>

모든 이미지 / .js 및 CSS 파일에 대해 동일하게 수행 할 수 있습니다.

브라우저에 로컬 사본을 얼마나 오래 사용해야하는지 알려 주도록 만료 헤더를 설정해야합니다.

프로젝트 설정을 확인하면 어딘가에 기본 아이콘이 표시됩니다. 제거 하시겠습니까?

Chrome Browser는 다른 사이트보다 다른 방법으로 Google 사이트와 협력 할 수 있으므로 처음에는 StackoverFlow에서 다른 곳에서 Favicon.ico를 찾는 것이 좋습니다.

또한 Firefox가 귀하의 사이트와 동일하게하는지 확인합니다. Favicon.ico는 사이트에 존재하지 않더라도 브라우저 실행 당 한 번만 요청해야한다고 생각합니다. 이것은 당신이 사용하는 크롬 버전의 버그 일 수 있습니다.

이것 따라서 질문/답변은 경로를 사용하여 브라우저에 Favicon을 제공하는 방법을 설명합니다.

아이콘 링크를 MasterPage에 넣는 것이 중요합니다. 그렇지 않으면 일부 브라우저는 전 세계적으로 한 번만 완료 한 것이 아니라 모든 디렉토리에 대한 favicon.ico를 찾으려고합니다.

 <link rel="SHORTCUT ICON" href="<%= Url.Content("~/content/images/rr-favicon.ico") %>"/>

Google 도구 모음은 내 로그 (및 IE6)로 판단하는 유죄 당사자 인 것 같습니다. 둘 다 루트 이외의 디렉토리에 대한 요청을 할 것입니다.

 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
 Mozilla/4.0 (compatible; GoogleToolbar 6.2.1910.1554; Windows 6.0; MSIE 8.0.6001.18828)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top