MLstate / opalang

The Opa Language for Web Application Development
http://opalang.org
Other
1.24k stars 125 forks source link

Fix for HTTP compression incompatibility with IE #154

Closed ghost closed 9 years ago

ghost commented 10 years ago

Internet Explorer misinterprets HTTP deflate standard and is not compatibile with web server which serves correctly compressed content. Opa prefers deflate over GZIP with deflate in HTTP style (not Microsoft), what introduces problems with IE (and some other browsers). Browser compatibility table: http://www.vervestudios.co/projects/compression-tests/results

hbbio commented 9 years ago

Resolved by detecting specifically IE and use gzip for IE, still favoring deflate which is more efficient for other browsers. A bug has been filed for IE.

ghost commented 9 years ago

Nice to have IE working :) But still, browser detection instead of feature detection is an anti-pattern, which may create problems in the future. See: http://learn.jquery.com/code-organization/feature-browser-detection/ http://msdn.microsoft.com/en-us/library/ie/hh273397%28v=vs.85%29.aspx Microsoft has already changed the format of the User-agent string in IE11 http://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx and will change it in the future. Your code will surely require updates to work with some specific (broken?) browsers.

hbbio commented 9 years ago

In that case, it's hard to use anything related to navigator. since the check is done on server-side and we barely have the UA to tell if it's IE or not (which announces support for deflate in the http headers).

That said, we based the User-Agent detection on /Trident/ which is still valid for IE11.