2010-08-12 36 views
9

Tôi thấy các trường hợp mà chuỗi useragent của IE có nhiều phần báo cáo là các phiên bản khác nhau. Ví dụ:Điều gì có nghĩa là khi IE báo cáo hai phiên bản trong UserAgent?

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 
    {B93AEBFF-7B72-44EA-B006-8CB078CC1911}; 
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 
    .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; 
    .NET CLR 3.5.30729) 

Vì vậy, đây là tuyên bố là MSIE 8.0, nhưng cũng MSIE 6.0. Điều này có ý nghĩa gì đặc biệt không? Nó là một cổ phiếu IE hoặc là có một cái gì đó đặc biệt về nó?

Tôi hỏi vì tôi nhìn thấy hành vi kỳ lạ với trình duyệt báo cáo nhiều phiên bản nhưng không phải với một IE8.0 rằng tuyên bố một phiên bản duy nhất:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; 
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; 
.NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) 

Không chắc nếu useragent có bất cứ điều gì để làm với nó, nhưng tôi nghĩ tôi sẽ hỏi.

[Cập nhật] Lưu ý rằng tôi không mã hóa các phiên bản trình duyệt cụ thể, tôi chỉ nhận thấy đây là sự khác biệt giữa trình duyệt hoạt động lạ và những trình duyệt không hoạt động. Tôi muốn biết những gì sẽ gây ra một số IE8.0 để báo cáo họ cũng IE6.0 những người khác không.

+0

Bạn đã thử tự mình truy cập trang web, đang chạy IE8 trong "chế độ tương thích" chưa? Tôi nghi ngờ đó là nguyên nhân của các tiêu đề tăng gấp đôi. –

+0

"Hành vi lạ" có nghĩa là gì và làm cách nào bạn xác minh tác nhân người dùng của mình? http://www.user-agents.org/index.shtml?moz không liệt kê tác nhân người dùng cụ thể này và nó trông không hợp lệ.Tuy nhiên, tác nhân người dùng có thể được ghi đè trong tùy chọn hoặc qua đăng ký (xem http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx). "{B93AEBFF-7B72-44EA-B006-8CB078CC1911}" trong tác nhân người dùng của bạn làm cho tôi nghĩ rằng một cái gì đó được borked trên máy tính của bạn. –

+0

Nhận useragent qua http://www.supportdetails.com/ và một trang khác mà tôi không thể nhớ lại. Điều này là từ trình duyệt của khách hàng (không phải của chúng tôi) vì vậy tôi không thể chắc chắn, nhưng tôi nghiêm túc nghi ngờ những người dùng messed với registry. Đây là phiên bản thứ 2 tôi đã thấy với nhiều phiên bản IE (phiên bản còn lại là MSIE7.0 cũng bao gồm MSIE6.0). Hành vi lạ: trong trường hợp này đó là sự kiện jquery .change không kích hoạt khi được mong đợi (khi người dùng chọn thứ gì đó mới trong trình đơn thả xuống). Chế độ tương thích: điểm tốt, sẽ thử khi tôi có quyền truy cập vào hộp cửa sổ. Cũng xảy ra w IE7 mặc dù. – Parand

Trả lời

1

Mọi người bắt đầu mã hóa với các phiên bản và sau đó tất cả các chuỗi tác nhân người dùng trong tương lai cần giữ phiên bản đó trong chuỗi của họ hoặc những thứ khác ngừng hoạt động.

Never mã để chuỗi user-agent, mã để khả năng: Câu trả lời

http://kangax.github.io/cft/

+2

không bao giờ đăng liên kết thuần túy, chúng không phải là bất tử :) – dit

+0

@dit Tôi cập nhật liên kết - cảm thấy tự do để lấy những gì bạn nghĩ là quan trọng và cập nhật câu trả lời –

+0

Thật tốt để lưu trữ đầu tiên các liên kết trên http: // lưu trữ. là hoặc http://archive.org và sau đó đăng liên kết _that_, có thể cùng với w/bản gốc. Nhưng tôi nghĩ rằng những gì + dit là nhận được ở là bạn nên đặt một số (có liên quan) thông tin từ liên kết vào bài viết của bạn. – RastaJedi

6

Lou là đúng nhưng tôi sẽ mở rộng trên đó.

Chuỗi tác nhân người dùng có sẵn cho mã JavaScript đang chạy trên trang web. Thật không may, thực tế khá phổ biến (và xấu) giữa các nhà phát triển web để kiểm tra chuỗi tác nhân người dùng để thực hiện các cải tiến hoặc giải pháp cụ thể cho trình duyệt. Khi các trình duyệt mới, với các khả năng nâng cấp, được giới thiệu, các nhà phát triển của họ nhận ra rằng nhiều trang web không hoạt động hoặc làm việc theo cách bị suy thoái, vì kiểm tra tác nhân người dùng được thực hiện không chính xác và lấy đường dẫn sai trong mã. Điều này đã khiến các nhà phát triển trình duyệt sửa đổi chuỗi tác nhân người dùng của họ sao cho một đường dẫn chính xác được thực hiện. Điều này dẫn đến tình hình hiện tại, nơi mà mọi trình duyệt giả vờ là Mozilla và các chuỗi tác nhân người dùng nói chung đều khá lộn xộn.

Do đó, hoàn toàn có thể là một trang web mà bạn thấy hoạt động sai đang thực hiện kiểm tra tác nhân người dùng và không thực hiện đúng. Như Lou đã nói, mã JavaScript không nên phân tích cú pháp tác nhân người dùng (một cách rất dễ vỡ để thử nghiệm trình duyệt và rất có khả năng xảy ra với các phiên bản tương lai của trình duyệt) nhưng thay vào đó hãy kiểm tra khả năng của trình duyệt. Thư viện JavaScript phổ biến hiện tại (như jQuery) làm đúng cách (một lý do nữa để sử dụng chúng) nhưng nó vẫn xảy ra rằng mã JavaScript được viết tùy chỉnh sẽ cố gắng sử dụng chuỗi tác nhân người dùng.

+1

Tôi nghĩ bạn và Lou có thể hiểu sai những gì anh ta nói. Anh ta không nói về Mozilla 4.0 theo sau là IE. Anh ta nhận được hai tác nhân người dùng hoàn toàn riêng biệt từ một kết nối, như thể một người nào đó đã dán liên kết này đến người khác. Điều đó khá bất thường. –

+0

Đặc biệt với phần "{B93AEBFF-7B72-44EA-B006-8CB078CC1911}". – RastaJedi

1

Phiên bản 6.0 thực sự nằm trong dấu ngoặc đơn phiên bản 8.0. (Tất nhiên, không thực sự hợp lệ theo ngữ pháp HTTP, nhưng khá nhiều người không coi đó là chuỗi có cấu trúc trong những ngày này.)

Bài đăng này dường như là kết quả duy nhất cho B93AEBFF-7B72-44EA-B006-8CB078CC1911 , đáng ngờ.

+0

Oh wow, trước khi bạn chỉ ra rằng (về nó đang ở trong ngoặc đơn), tôi thực sự đã nghĩ rằng đó là hai tác nhân người dùng riêng biệt. Vì vậy, có vẻ như nó thực sự chỉ là một; Tôi không nghĩ người khác nhận ra điều đó. – RastaJedi

Các vấn đề liên quan