2009-08-21 5 views
0

위의 "어떤 브라우저를 사용하고 있습니까?"라는 질문이있는 텍스트 입력을 원합니다. 그런 다음 양식이 제출되면 해당 답변을 User-Agent HTTP 헤더와 비교하고 싶습니다.그들이 사용하는 브라우저를 묻는 일반적인 방법은 무엇입니까?

안정적으로이 작업을 수행하는 방법에 난처한 처지입니다.

IE 나 FF 같은 약어를 사용하지 말고 철자를 써달라고 요청할 수 있지만 Internet Explorer는 "식별자"로 "MSIE"를 사용합니까?

또 다른 생각은 User-Agent 문자열 풀을 유지 한 다음 4 개 정도의 다른 임의의 문자열에 무작위로 삽입 된 선택 요소를 제시하고 해당 임의의 문자열을 선택하도록 요청하는 것입니다. 기술이 부족한 사용자가 문제가되기에 충분한 시간을 버릴 까봐 두렵다. 옵션 중에 각 브라우저 유형 중 하나만 있는지 확인하기 위해 일부 논리를 사용할 수 있다고 생각합니다. 그러나 나는 그것에 대해서도 신경을 썼습니다.

+1

왜 내가 이것을하고 싶은지를 분명히 밝히고 싶지 않지만, 일부 "방문자"가이 필드를 접하게되면이 필드로 무엇을해야하는지 알지 못한다고 말하자. – joebert

답변

6

왜 사용자 에이전트에 관해 묻고 싶습니까?

언급 한대로 적절한 http 헤더를 가져 오는 것으로 충분합니다.

하지만 당신은 심하게 나는

  • 정규 표현식 가고 싶어하는 것이 필요한 경우 - 이전에 따라
  • 현재 가능한 일치를 HTTP 사용자 에이전트 헤더를 확인하고 해당 헤더에서 중요하지 않은 정보를 절단 단계
  • 일치하는 경우 사용자에게 묻습니다. 그렇지 않은 경우 자신의 대답을 입력하십시오.
  • 그런 다음 IE와 MSIE를 입력 할 수 있도록 일부 사전 값에 입력 한 내용을 일치 시키려고합니다. 같은 결과를 얻는다.

위의 내용이 너무 모호해 보입니다. :) 그리고 추상적인데, 어쩌면 설명을 해줄 수 있습니다 - 왜 그걸 원하니? 어쩌면 다른 방법이 있을까요?

1

기억 : 클라이언트는 HTTP 헤더를 보내고 잠재적으로 사용자는 사용자 에이전트에 무엇이든 넣을 수 있습니다. 따라서 사용하고있는 브라우저에 대해 "거짓말하는"사람들을 붙잡고 싶다면 HTTP 헤더를 보낼 수없는 사람들 만 보냅니다.

+0

진정한 거짓말 쟁이를 찾고 있지는 않지만, 새로운 분야를 어떻게 다루는 지 배울 수없는 "방문객"입니다. – joebert

+0

@ joebert : 좋습니다. 네가하려는 일을 알아 내지 못했기 때문에 나는 단지 추측했다. 어쨌든 요점은 : 클라이언트에서 오는 것이라면 신뢰할 수 없다는 것입니다. 당신은 여전히 ​​그것을 사용할 수 있지만 제가 말했듯이 진실 일 필요는 없습니다. –

1

할 수 있습니다도 100 % 신뢰 사용자 입력이나 브라우저가 HTTP 헤더에 보내는 문자열 ...

+0

알아, 모든 것이 소독되고있다. :) – joebert

1

당신은 그들이 사용하는 브라우저가 무엇인지를 물어보고 싶은 이유 명백한 질문은? 소문자, 공백을 제거, 숫자를 제거 :

A) 사용자 문자열을 정상화 :

그러나

은 주어진?

b) 정규화 된 문자열과 사용자 에이전트 문자열 사이에 맵을 작성하십시오.

조회를 수행 할 때 정규화 된 문자열 또는 사용자 에이전트 문자열이지도에없는 경우이를 사람에게 전달하여 적절한 매핑을 사용하여지도에 추가하십시오.

아마도 사용자 에이전트를 어떤 방식 으로든 정상화하려고 할 것입니까?

+0

글쎄, 사용자 에이전트 문자열은 괴상한 지점까지 까다 롭습니다. 다른 브라우저 제조사는 다른 브라우저 제조업체의 브랜드 이름과 버전을 자신의 옆에 넣습니다. 기본적으로 포괄적 인 상호 참조 문서를 사용하여 각 브라우저 작성자를 시도하거나 더 나은 방법으로 찾고자하는 브라우저 작성자를 알아야합니다. – JohnnySoftware

관련 문제