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>