IE címkéhez tartozó bejegyzések

ASP.NET 4.0 űrlap alapú hitelesítés IE11 alatt

Korábban már említettem, hogy a böngészők detektálásán alapuló megoldások gondot okozhatnak, amikor megjelenik egy új böngésző vagy egy új böngésző verzió. Sajnos mivel az ASP.NET korábbi verziói is tartalmaznak böngésző detektálós részeket, az Internet Explorer 11 megjelenése ott is gondot okozhat.

Véletlen egybeesés, hogy az említett cikk után egy nappal Eric Lawrence is írt egy cikket az IE11-ről és a User-Agent sniffingről. Néhány érdekesség belőle:

  • Az IE csapat szándékosan úgy választotta meg a UA stringet, hogy a weboldalak inkább WebKites böngészőnek ismerjék fel, mint régebbi IE verziónak.
  • A nyár folyamán az ASP.NET csapat kiadott frissítéseket a probléma megoldására, például .NET 4.0-hoz a KB2836939-et. A többi frissítés listája megtalálható a cikkben.

Mi egy olyan problémába futottunk bele korábban, hogy az IE11 lelkesen felküldte az ASP.NET forms authentication cookie-t a szervernek, de a szerver fittyet hányt rá. A web.config fájlban lévő forms elemnél korábban nem szerepelt a cookieless attribútum, mert az alapértelmezett UseDeviceProfile eddig tökéletesen működött, most viszont explicit módon be kellett állítanunk a UseCookies értéket, hogy az oldal IE11-gyel is működjön rendesen.

Itt egy régebbi szerverről volt szó, amin ASP.NET 4.0 futott a fenti frissítés nélkül, 4.5-ön ezt nem tapasztaltuk.

Megjegyzem a cookieless="UseCookies" biztonság szempontból is a javasolt beállítás.

 

Technorati-címkék: ,,,

IE11 User-Agent string

A Windows 8.1-ben megjelenő Internet Explorer 11-hez tartozó User-Agent string (ez az, amit a HTTP kérésben a böngésző felküld a szervernek) a következő:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Akkor lesz nyilvánvaló, hogy mi ebben az érdekes, ha összehasonlítjuk a korábbiakkal, például az IE10 és az IE9 azonosítójával:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

A formátum tehát teljesen megváltozott, sőt az MSIE jelölés teljesen eltűnt! Ez akkor okozhat gondot, ha valamilyen kliens vagy szerver oldali kódunkba böngészőfüggő viselkedést írtunk, ugyanis a régebbi kódunk nem biztos, hogy jól fogja felismerni az új böngészőt.

Az ASP.NET platformban is vannak olyan részek, amik tekintettel vannak a kliens böngészőjére, és sajnos korábban már volt rá példa, hogy egyes funkciók nem jól működtek az újabb böngészőkkel.

Szerencsére az ASP.NET böngésző detektáló része a .browser fájlok segítségével rugalmasan alakítható, amit az is jól mutat, hogy Windows 8.1-en a C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers mappában található ie.browser fájl már az új User-Agent stringnek megfelelő részt is tartalmaz:

<browser id="InternetExplorer" parentID="Mozilla">
   <identification>
     <userAgent match="Trident/(?'layoutVersion'[7-9]|0*[1-9]\d+)(\.\d+)?;(.*;)?\s*rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)))" />
     <userAgent nonMatch="IEMobile" />
     <userAgent nonMatch="MSIE " />
   </identification>
   <capabilities>
     <capability name="browser"              value="InternetExplorer" />
     <capability name="version"              value="${version}" />
     <capability name="majorversion"         value="${major}" />
     <capability name="minorversion"         value="${minor}" />
     <capability name="layoutEngine"         value="Trident" />
     <capability name="layoutEngineVersion"  value="${layoutVersion}" />
     <capability name="type"                 value="InternetExplorer${major}" />
   </capabilities>
</browser>

A tapasztalatunk az, hogy érdemes tesztelni az új böngészővel a régi webalkalmazásokat, még akkor is, ha a saját kódunkba nem írtunk böngészőfüggő részeket, mert a platform is tartalmaz ilyeneket. Különösen akkor érdemes odafigyelni, ha a szerver oldalon még ASP.NET 4.0 van, tehát nem a legfrissebb 4.5 (amit az in-place upgrade miatt nem mindenhol mernek telepíteni).

Egy következő cikkben írok majd néhány konkrét ASP.NET-es problémáról, amibe belefutottunk IE11-gyel.

 

Technorati-címkék: ,,

Tesztelés több Internet Explorer verzión

Gyakran visszatérő kérdés, hogy hogyan lehet kényelmesen több Internet Explorer verzión tesztelni a weboldalunkat. A kérdés azért izgalmas, mert míg más böngészőket lehet  több verzióban egymás mellé telepíteni, addig az Internet Explorernek – mivel össze van nőve az operációs rendszerrel – csak egy verziója lehet a gépünkön.

Korábban írtam már erről, azonban azóta a lehetőségeink csökkentek:

Az IETester ugyan támogatja a Windows 8-at és az IE10-et, de elég lassan fejlődik, és a hiányosságai továbbra is megmaradnak.

A Microsoft Expression SuperPreview-t az egész termékcsaláddal együtt süllyesztőbe küldte a cég, nem fejlesztik tovább.

Az Internet Explorer Developer Toolbar jelentősen megváltozik. A Windows 8.1-ben megjelenő IE11-ben egy teljesen újraírt F12 DevToolst találunk, megújult dizájnnal és számos új funkcióval, azonban pont  a kompatibilitási tesztek terén van egy fájó pont. Korábban ugyanis – egészen az IE10-ig – volt egy remek funkció a Dev Toolbaron a korábbi böngészők emulálására:

IE10 Developer Toolbar: Browser Mode emulation

Ez egyszerűnek és jónak tűnik, csakhogy van vele pár gyakorlati probléma. Először is van mellette egy Document Mode választó is, nagyon hasonló opciókkal:

IE10 Developer Toolbar: Document Mode emulation

IQ-ból nem egyszerű rájönni, hogy melyik mire szolgál, de az IEBlog Testing Sites with Browser Mode vs. Doc Mode című cikkében értelmesen le van írva. Persze ez csak azoknak segít, akik elolvassák.

A másik probléma ezzel a megoldással, hogy sajnos nem teljesen tökéletes. A legtöbb kompatibilitási problémát valóban meg lehet találni vele, de mi is futottunk bele számtalan olyan esetbe, amikor a Dev Toolbaros verzió váltással nem találtunk meg egy hibát, ami viszont egy IE8-on előjött. Magyarul a módszer nem megbízható.

Mindezeket átgondolva az IE csapat úgy döntött, hogy az IE11-ben ezt a funkciót megszűntetik. Így néz ki az új Dev Toolbar Emulation füle:

IE11 Developer Toolbar Emulation tab

Látható, hogy számos új funkció megjelent, van például Desktop és Windows Phone Profile, már nem csak felbontást, hanem tájolást is lehet állítani, sőt van GPS szimuláció is. A böngésző verziókkal kapcsolatban van ugyan egy User Agent string kamuzó opció, sőt van egy Document mode is (ami lehet Edge vagy Default), de nem tudjuk átkapcsolni a böngésző motorját a korábbi verzió motorjára.

Mi a megoldás?

Az információ ikonra kattintva a modern.IE webhelyre juthatunk, azon belül is a Test Across Browsers oldalra, ahol két megoldás találhatunk:

1. A Microsoft a http://www.browserstack.com szolgáltatásait ajánlja, amihez 3 hónapos ingyenes hozzáférést biztosít. Ez az ajánlat 2014. január 10-ig érvényes!

2. Letölthetünk egy rakás előre konfigurált virtuális gépet. Csak a hoszt operációs rendszert és a virtualizációs platformot kell kiválasztanunk és máris tölthetjük lefelé az adott IE verzióval konfigurált Windowsos virtuális gépet:

modern-ie-vms

A Microsoft aktuális álláspontja szerint a virtuális gépek használata a legmegbízhatóbb megoldás a webes megoldások korábbi IE verziókban történő tesztelésére, és ehhez most minden eszközt meg is kapunk.

Ami pedig a jövőben megjelenő verziókat illeti, a javaslat természetesen a szabványok követése. Kezdetnek érdemes elolvasni Rey Bango és Dave Methvin 20 tippjét a modern weboldalak kontra régi IE verziók témában.

 

Technorati-címkék: ,,

Internet Explorer 11 Developer Tools

A Windows 8.1-ben természetesen új Internet Explorer is jön, aminek lehet örülni (nekem jelentősen gyorsabbnak tűnik), és amin persze lehet szomorkodni is (bővíthetjük a teszt mátrixokat).

Akármennyire is hozzá vagyunk szokva más böngészőkhöz, vagy azok fejlesztői funkcióihoz, az új IE Developer Toolst mindenképp érdemes kipróbálni. És nem csak azért, mert ütősebben néz ki:

ie11-devtools

Hanem természetesen a funkciók miatt is. Sorban az ikonok:

  • DOM Explorer
  • Console
  • Debugger
  • Network
  • UI Responsiveness
  • Profiler
  • Memory
  • Emulation

Persze a korábbi DOM Explorer és a Network fül is fejlődött, de az új fülek a különösen izgalmasak. Azt hiszem elég egyértelmű, hogy milyen irányba mutatnak.

Később még írok róluk bővebben.

 

Technorati-címkék: ,

IE10 frissítés után Access Denied

Ma megjelent az Internet Explorer 10 Windows 7-re, nosza le is töltöttem és pár perc alatt sikeresen fel is frissítettem a böngészőt a gépemen. A frissítés után azonban olyan hibába futottam bele, hogy nem sikerült új URL-t felvenni a kedvencek közé, mert mindig elhasalt Access Denied hibával.

Némi Sysinternals Process Monitorozás után megnéztem a Favorites mappám NTFS tulajdonosát, majd átállítottam az aktuális felhasználóra, és azonnal megszűnt a probléma.

 

URL megnyitása WebDAV-on át

Aki SharePointtal foglalkozik, annak hasznos lehet az alábbi két kódrészlet, amelyek ugyanarra szolgálnak: megnyitnak egy URL-t “web folder” nézetben, azaz WebDAV-on át, persze csak IE-ben.

<span style="behavior:url('#default#httpFolder');" 
      onclick="this.navigateFrame('https://intranet', '_blank')">
  Megnyitás
</span>     

<a href="#" target="_blank"
   style="behavior:url('#default#AnchorClick');"
   folder="https://intranet">
  Megnyitás
</a> 

Részletes leírás itt: About Web Folder Behaviors

 

Technorati-címkék: ,

A jQuery szakít a régi IE verziókkal

jquery-logoMa megjelent a jQuery legújabb, 1.9 verziója és vele együtt a 2.0 verzió bétája. Bár a két verziónak ugyanaz az API-ja (pár dolgot az 1.9-ből éppúgy kivettek, mint a 2.0-ból), mégis óriási különbség van közöttük:

  • Az 1.9 verzió – a korábbiakhoz hasonlóan – fut Internet Explorer 6, 7 és 8 verziókon, ahogy ők mondják “oldIE”-n.
  • A 2.0 nem fog futni oldIE-n. Ez számos egyszerűsítést tett lehetővé, aminek köszönhetően a 2.0 verzió gyorsabb és kisebb lesz, mint az 1.9 verzió.

A Release Notes szerint a fejlesztők mindkét verziót támogatni fogják a jövőben, de én úgy sejtem, hogy ahogy az lenni szokott, ez nem lesz mindig így. Előbb-utóbb az 1.9 el fog avulni, az új funkciók pedig könnyen lehet, hogy csak a 2.0 verzióba fognak bekerülni.

Vajon ez kinek rosszabb, az IE-nek vagy a jQuery-nek? A fejlesztők fognak átállni a jQuery-ről más könyvtárra, vagy a weboldalak fognak lemondani a régi Internet Explorer támogatásáról?

 

Technorati-címkék: ,,