3

我有一個網站在IIS6的服務器上運行。該網站配置了兩個hostheader綁定在端口80:與IE9不一致的UserAgent字符串

  • mywebsite1< - 要求在本地Windows中的條目hosts文件僞造DNS條目
  • mywebsite2.mydomain.com< - 使用DNS

因此,理論上使用網絡瀏覽器來訪問:

...都應該表現出我的瀏覽器完全一樣的網站。

然而,當我使用IE9查看http://mywebsite1/,瀏覽器發送到Web服務器的用戶代理是這樣的:

Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+Trident/5.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+Tablet+PC+2.0;+MS-RTC+LM+8;+OfficeLiveConnector.1.5;+OfficeLivePatch.1.3;+.NET4.0C) 

但是當我使用IE9查看http://mywebsite2.mydomain.com/,用戶代理的瀏覽器發送到Web服務器是這樣的:

Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Trident/5.0) 

爲什麼IE9在這兩種情況下發送不同的UserAgent字符串?瀏覽器也在模擬這些用戶代理的渲染規則,所以這會導致噩夢CSS問題!

附加信息:

  • 我已經包含在頁頭標記。
  • 該網站是ASP.NET框架3.
  • Web服務器是IIS 6
  • Web瀏覽器IE9是。
  • (讓我知道如果你要我澄清別的)查看您的http://mywebsite1/

回答

4

IE9 reportsMozilla/4.0當在兼容性視圖,你點擊「殘缺頁」的圖標? (該視圖也可以是由提供的html提供的requested。)

+0

啊是的,這使得兩個URL一致,但實際上它是另一個顯示「破損頁面」圖標的主機頭版本。 http:// mywebsite1 /不顯示「破損的頁面」圖標。是什麼觸發了在IE9中顯示的破損頁面? – BG100 2011-06-06 16:16:30

+0

來自服務器的響應頭或HTML中的元標記可以做到這一點,或者如果你誤點擊並設置視圖,它會堅持 - 看看@ http://stackoverflow.com/questions/3726357/why-does -ie9-switch-to-compatibility-mode-on-my- – 2011-06-06 16:19:30

+0

完美。謝謝你的幫助。 – BG100 2011-06-06 16:20:44

0

這將更改useragent;但是,當我更改useragent時,它僅適用於我正在使用的網站,而且我在網上衝浪,useragent將恢復爲默認設置。這是我用代碼來更改useragent

WebBrowser1.Navigate(txtAddressBar.Text,Nothing,Nothing,「user-agent:」&「Mozilla/5.0(Windows; U; Windows NT 5.1; en-US )AppleWebKit/532.2(KHTML,如Gecko)ChromePlus/4.0.222.3 Chrome/4.0.222.3 Safari/532.2「)

此代碼發佈爲一行;不過,我不知道如何在這裏做到這一點。