Easy CORS for Angular Apps in Legacy Browsers
October 10, 2014Out of the box, Angular.js won’t work with IE8/IE9 because CORS is not fully implemented. Fortunately, XDomain offers a painless set-and-forget way to add full CORS support to IE8 and IE9. XDomain works by creating an iframe in the Angular app and loading a “proxy” from the API server. All XHRs are intercepted and rerouted through the iframe to the API server.
Configuring XDomain is really simple. Inside index.html
, place a conditional comment for IE9 and below that loads the XDomain library and sets up the URLs of the slave proxies. xdomain.slaves
expects a dictionary of host:path configuration data that specifies where it should load the slave proxy from for a given cross-domain host. Here’s a sample of what that might look like:
<!--[if lte IE 9]> <script src="//cdn.rawgit.com/jpillora/xdomain/gh-pages/dist/0.6/xdomain.min.js"></script> <script> xdomain.slaves({ "http://127.0.0.1:5000": "/static/proxy.html", "http://localhost:5000": "/static/proxy.html", "http://api.staging.com": "/static/proxy.html", "https://api.production.com": "/static/proxy.html" }); </script> <![endif]-->
Note that the XDomain slave configuration must happen before loading any other libraries to ensure that it’s hooks are installed properly. On the API server, you will need to host a proxy.html
file that contains the configuration for the slaves. If your API server is using Flask, this is as simple as creating a static
directory in the root of the Flask project and putting the proxy.html
file there. Flask will serve files from this directory without any additional configuration. The slave configuration is very similar to the master’s configuration. xdomain.masters
expects a dictionary of host:path data that specifies what paths the proxy should respond to for each given master:
<script src="//cdn.rawgit.com/jpillora/xdomain/gh-pages/dist/0.6/xdomain.min.js"></script> <script> xdomain.masters({ "http://127.0.0.1:9000": "*", "http://localhost:9000": "*", "http://api.staging.com": "*", "https://api.production.com": "*" }); </script>
Thats it! Legacy browser support in about 20 lines or less!
Stay in the loop with our latest content!
Select the topics you’re interested to receive our new relevant content in your inbox. Don’t worry, we won’t spam you.

Iulia Rontu to join leadership team at MichiganLabs
February 4, 2021Iulia will be joining the leadership team at MichiganLabs effective Monday, February 8, 2021. Iulia has been with MichiganLabs for 2 years in May of this year. She is currently the UX Practice Lead where she helps define our user experience practice to help transform and delight our clients.
Read more
How we approach UX @ MichiganLabs
July 29, 2019At Michigan Software Labs, we focus on building superior user experiences (UX) for our clients and their customers.
Read more
Working Remote vs. In-Person. Is there a balance?
December 2, 2019There’s a battle being waged around the world—a battle between companies all-in on working remotely and those who prefer the traditional model of showing up to work each day. Okay, maybe it's not quite a battle. But, in an increasingly connected world, a growing number of companies are struggling to decide if mobile is right for them.
Read more