公司BP&IT項目組.從上上個月成立開始開發BP&IT軟件.這個月開始測試我悲劇的發現他盡然不支持我電腦上的IE11.半個多月還沒解決
我們先來分析下原因首頁 登陸頁面正常瀏覽http://hr.bingjun.cc/
登陸后網址呈現http://hr.bingjun.cc/(F(0-MEj-fnv8v-hWRGI2rOhfQ_0SZjQAnMEBs5P1DKcEhwdX-TTu8TAZ_H6HVGorBM-TaTm4zK_DCSdO8gvqOXWCoou4YJIVziHJ1PC9hke7w1))/Default.aspx
點擊任何網頁任意一個鏈接
鍵 值Refererhttp://hr.bingjun.cc/MyTask/MyTaskPage.aspx
就302http://hr.bingjun.cc/
對網址http://hr.bingjun.cc/(F(0-MEj-fnv8v-hWRGI2rOhfQ_0SZjQAnMEBs5P1DKcEhwdX-TTu8TAZ_H6HVGorBM-TaTm4zK_DCSdO8gvqOXWCoou4YJIVziHJ1PC9hke7w1))/Default.aspx
分析我們可以發現可以輕易發現.這是一個使用無Cookie模式的網址鏈接.并且F打頭可以判斷我們的BP&IT項目組使用了Forms表單驗證
而跳轉頁面卻是一個http://hr.bingjun.cc/MyTask/MyTaskPage.aspx不帶無Cookie URL的頁面這樣就導致了Cookie丟失就更別論依靠Cookie工作的 Session 和 登陸狀態了
為什么頁面跳轉后卻沒有帶上CookieURL了 我想是因為他們的代碼沒有使用 服務器路徑“~/” 所導致 因為只有使用服務器路徑ASP.NET才會幫我們自動的吧CookieUrl段給帶上
發現后立即詢問BP&IT項目組為什么我的IE11無法使用內部網站(回答我是微軟的BUG)
盡然是這樣那根據我所掌握的知識能導致此問題的BUG 應該是ASP.NET把 IE11識別為無Cookie 瀏覽器了
那這樣的話解決辦法就很多 首先從服務器級別講起
我們知道ASP.NET識別瀏覽器是不是無Cookie的是通過本身的一個庫來識別的那我們也可以往這個庫里加點東西
C:/Windows/Microsoft.NET/Framework/v4.0.30319/Config/Browsers
打開此目錄可以發現下面后很多文件沒錯這就是ASP.NET用來識別瀏覽器的庫了打開ie.browser
添加一個browser 配置節點
<browser id="IE11" parentID="Mozilla"> <identification> <userAgent match="Trident//7.0; rv:(?'version'(?'major'/d+)(/.(?'minor'/d+)?)(?'letters'/w*))(?'extra'[^)]*)" /> <userAgent nonMatch="IEMobile" /> </identification> <capture> <userAgent match="Trident/(?'layoutVersion'/d+)" /> </capture> <capabilities> <capability name="browser" value="IE" /> <capability name="layoutEngine" value="Trident" /> <capability name="layoutEngineVersion" value="${layoutVersion}" /> <capability name="extra" value="${extra}" /> <capability name="isColor" value="true" /> <capability name="letters" value="${letters}" /> <capability name="majorversion" value="${major}" /> <capability name="minorversion" value="${minor}" /> <capability name="screenBitDepth" value="8" /> <capability name="type" value="IE${major}" /> <capability name="version" value="${version}" /> </capabilities> </browser>
這樣該服務器上v4.0.30319版本下的所有站點此問題都算是解決了
2 BP&IT的還說過他們找到過在服務器上改配置文件的解決方法他們不敢用 服務器上站點太多怕崩潰 哎~~不知道怎么說他們
不知道ASP.NET Config配置文件 站點的都可以追加或覆蓋全局的嗎?(PS:在上面那個路徑的Config下的都是全局配置)
既然是可以覆蓋那在項目里新建個瀏覽器文件不就OK了 至于怎么新建瀏覽器文件這個應該不用我說了吧(博客園的圖片盡然要外鏈要不我加幾個步驟進來了)
3 如果這也閑麻煩或者怕以后還會有類似的不識別的瀏覽器那就修改cookieless的值吧
打開web.config 添加或修改System.web下的節點
<sessionState mode="In配置cookieless="UseCookies" 這也所有的瀏覽器不管瀏覽器支不支持Cookie 都使用瀏覽器Cookie 而不是URLCookie(話說你們見過不支持Cookie的瀏覽器嗎?PS:我么見過)
到這兒我想也差不多了吧
PS:IE11出現 ——_doPostBack未定義 也是瀏覽器不識別的問題哦 不過不是以為瀏覽器不識別Cookie而是以為他不支持javascript通過最開始的2個方法一樣的解決上的重點是在配置中加入如下2句
<capability name="Javascript" value="true" /> <capability name="cookies" value="true" />(PS:你們見過不支持Javascript的瀏覽器嗎?我沒見過..這微軟..搞毛!默認成都支持多好不支持才寫配置文件不很好嘛)
技術交流群
新聞熱點
疑難解答