-
Notifications
You must be signed in to change notification settings - Fork 203
Open
Labels
Description
steps to reproduce
<!-- page1.html -->
<body>
<script src="https://unpkg.com/[email protected]/polyfill/index.js"></script>
<script src="https://unpkg.com/[email protected]/promise.min.js"></script>
<script>
fetch('page2.html')
.then(function(response) {
return response.text();
})
.then(function(data) {
console.log(data);
});
</script>
<!-- page2.html -->
... any data ...
use any http server that supports Access-Control-Allow-Origin headers:
npm install http-server -g
http-server -p 8081 --cors
- --cors - to enable CORS via the Access-Control-Allow-Origin
result
Through VM WinXP SP3 with IE version: 8.0.6001.18702 Update version: 0
- F12 - Document Mode = 8 and 7.
and/or
- Win10 IE11 - F12 - Emulation - Document Mode = 7 and 8 / User agent: 7/8
It does not work at all!
user-space solutions
Here's my example of hack for already released unfetch version like 4.0.1. Works fine for IE7+:
var send = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function()
{
this.onreadystatechange = function()
{
// TODO: prevent duplicate calling of onload if it's not CORS!
if(this.readyState === 4 && this.status === 200) {
return this.onload.apply(this, arguments);
}
}
return send.apply(this, arguments);
}
// IE7+ ok now
Actually, even IE 11 with 5+ emulation, that of course strange :) because it should be ActiveXObject before IE7. Bad emulation :)
However, for real IE8 CORS support we should have requests through XDomainRequest not for XMLHttpRequest. Thus, your onload()
is silent.