문제는이 웹 페이지가 먼저 모바일 웹의 프론트 엔드 개발과 관련이 있다는 것입니다. 나는 페이지의 미학적 효과를 달성하기 위해 HTML5+부트 스트랩 조합을 사용하는 것을 선호합니다. 다른 프론트 엔드 작업은 JavaScript로 넘겨집니다 (여기서는 기본 JavaScript 코드를 완전히 사용하고 프레임 워크를 사용하지 않습니다. 휴대 전화가 느린 속도로 웹 페이지를로드하고 프레임 워크의 많은 사용하지 않는 기능도 웹 페이지와 함께로드하여 사용자 트래픽을 소비합니다).
모든 기능이 준비된 후 고객은 시험에 매우 만족 한 다음 코드를 공식 서버에 제출했습니다. 그러나 상대방이 갑자기 한 가지 언급 : 당신이 만든 페이지는 실제로 매우 아름답고 호환성이 좋지만이 페이지는 컴퓨터의 브라우저를 사용하여 액세스 할 수 있으므로 다른 페이지는 페이지의 소스 코드를 자연스럽게보고 전체 페이지를 복사 할 수 있습니다. 이것을 막을 방법이 있습니까? 그런 다음 질문이 다시옵니다. Wechat Secondary 개발을 처음으로 한 것은 이번이 처음입니다. 나는 그런 요구를 한 적이 없다. 어떻게 해결할 수 있습니까?
나는 그것을 한동안 생각할 수 없었고, 나중에이 문제를 제쳐두고 백엔드 사업을했습니다. 백그라운드에서 데이터 수집 기능을 수행 할 때 PHP 코드는 매개 변수 $ _server [ 'http_user_agent']를 사용합니다. 브라우저가 웹 페이지를 방문 할 때 브라우저 및 사용자 운영 체제에 대한 몇 가지 기본 정보가 포함 된 서버로 사용자를 보낼 것이라고 갑자기 생각했습니다. WeChat은 내장 브라우저를 가지고 있기 때문에 UserAgent는 WeChat과 함께 웹 페이지를 탐색 할 때 WeChat과 관련된 고유 한 로고를 가져올 것입니다 (결국 Tencent는 대기업이며 WeChat은 핵심 제품 중 하나입니까? 코드를 사용하여 사용자 에이전트를 인쇄하여 알아보십시오. JavaScript 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
경고 (Navigator.useragent);
</스크립트>
내 전화에 표시된대로 결과를 얻었습니다.
물론, 나는 정말로 다른 것을 보았습니다. 나는 똑똑한 친구들이 그것을 발견했다고 생각합니다. 맞습니다. 이것이 바로 이것입니다 : Micromessenger/6.0.0.50_R844973.501. 슬래시 뒤에있는 문자열은 현재 사용중인 WeChat의 버전 번호이며 전면은 WeChat의 고유 한 로고 여야합니다. 실제로, 나는 그것이 처음에 그것이 미세 매수라고 생각했고, 중국어 번역은 "미세한"을 의미한다고 생각했지만, 자세히 살펴본 후에는 그렇지 않다는 것을 알았습니다. 사전을 찾은 후, 나는 메신저라는 단어가 "메시지를보고하는 사람, 메시지를 보내는 사람"을 의미한다는 것을 깨달았으므로 그것이 이상하다고 생각하지 않습니다. 이 로고는 다른 브라우저가 가지고 있지 않은 것으로 말해야하므로 솔루션은 여기에 있습니다. 코드를 참조하십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
// 정기적으로 브라우저의 UserAgent와 일치합니다. WeChat 고유 식별자가 포함되어 있지 않으면 다른 브라우저입니다.
var userAgent = navigator.useragent;
if (userAgent.match (/micromessenger/i)! = 'micromessenger') {
//이 경고함은 현재 페이지를 차단하고 계속로드합니다.
경고 ( '이 액세스는 금지되었습니다.이 페이지에 액세스하려면 WeChat의 내장 브라우저를 사용해야합니다!');
// 다음 코드는 JavaScript로 현재 페이지를 강제로 닫는 것입니다.
var Opened = window.open ( 'about : blank', '_self');
OPENED.OPENER = NULL;
Open.Close ();
}
</스크립트>
이 코드는 Android, iPhone, iPad 및 PC에서 테스트되었습니다. WeChat 내부에서 웹 페이지가 열리지 않는 한 위의 경고 상자가 먼저 나타납니다. 현재 뒤에있는 페이지는 비어 있고 아무것도로드되지 않았습니다. 경고 상자의 확인 버튼을 클릭하면 마지막 3 줄의 코드가 현재 페이지를 강제로 닫습니다. 좋아, 여기에서는 사용자의 원래 의도를 깨달았으며 간단하게 수행 할 수 있습니다.
잠깐, 이런 식으로 작업을 정말로 끝낼 수 있습니까? 다른 문제가 없을 것이라고 확신합니까? 물론. 실제로,이 방법은 단조 사용자 가자이기 때문에이 제한은 여전히 우회 할 수 있기 때문에 당신을 확신시키지 못할 것입니다. 일반적으로 신사를 지키지 만 악당을 지키는 것입니다. 모두가 알고 있습니다. 물론, 어떤 친구 가이 문제를 해결하는 더 좋은 방법이 있다면, 아래 기술은 서로 공유하고 의사 소통하는 데 있습니다.