[google-chrome] Chrome의 ‘데스크톱 사이트 요청’옵션은 어떻게 작동하나요?

iOS Google 크롬의 경우 사용자가 “데스크톱 사이트 요청”버튼을 누르면 브라우저가 데스크톱 사이트를 불러 오기 위해 무엇을하나요? 사이트에서 찾고있는 요청에 대한 일종의 헤더 또는 유사한 것을 상상합니다.



답변

유일한 차이점은 User-Agent:요청 의 헤더 라고 생각합니다 .

내 Android 기기에서 Chrome이 보낸 User-Agent 헤더는 다음과 같습니다.

Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19

첫 번째 단어에서 “Mobile”이라는 단어와 Android 시스템 및 장치에 대한 언급도 있습니다.이를 확인하면 데스크톱 Linux 버전에서 보낸 값과 거의 일치하는 잘못된 정보 (예 : X11 및 x86_64)도 제공됩니다. 크롬.


답변

Chrome이 이제 User-Agent‘데스크톱 사이트를 요청’하면 원래 표시 영역 메타 태그를 변경할 뿐만 아니라 무시 한다는 점을 지적하고 싶었습니다 . 따라서 User-Agent더 이상 냄새를 맡을 필요가 없으며 대부분의 반응 형 사이트가 자동으로 수행하므로 뷰포트 변경에 의존 할 수 있습니다. 자세한 내용은 이 변경 사항 을 참조하십시오.


답변

또 다른 약간의 차이점은 리디렉터가 이동하기 전에 요청이 마지막으로 의도적으로 입력 한 URL에 있었던 것으로 보인다는 것입니다. 예를 들면 :

주어진 : somesite.com은 에이전트를 스니핑하고 Android를보고 document.location + = “/ m”을 수행합니다.

그러면 브라우저의 URL은 somesite.com/m이됩니다.

그러나 “데스크톱 사이트를 요청”하면 User-Agent를 변경하고 somesite.com에서 다시 요청합니다.

그렇지 않은 경우 : 처음에 somesite.com/m의 모바일 URL로 직접 이동 한 경우에는 somesite.com/m 만 다시로드됩니다.

나는 이것이 HTTP 301 및 302 리디렉션과 함께 작동 할 것으로 예상하고, document.location 변경 (적어도 설명 된대로)과 함께 작동한다는 것을 알고 있으며 <meta> 새로 고침과 함께 작동한다고 추측 할 것입니다.


답변

이 자바 스크립트 스 니펫은 효과적으로 동일한 작업을 수행합니다.

function requestDesktopSite() {
    document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>


답변