XDomainRequest. IE 8 will not work when CORS requests
- Langage dominant
- JavaScript
- Étoiles
- 5.7k
- Forks
- 204
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## steps to reproduce
unfetch@4.0.1:
```html
fetch('page2.html')
.then(function(response) {
return response.text();
})
.then(function(data) {
console.log(data);
});
... any data ...
```
use any http server that supports Access-Control-Allow-Origin headers:
```bash
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+:
```javascript
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](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest_in_IE6). Bad emulation :)
However, **for real IE8** CORS support we should have requests through **XDomainRequest** not for XMLHttpRequest. Thus, your `onload()` is silent.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par unfetch@4.0.1/polyfill/index.js et suivez le traitement de XMLHttpRequest.prototype.send et onload décrit dans le rapport. Reproduisez la requête CORS dans IE8 ou dans les modes d’émulation IE7/8 documentés, puis vérifiez que la requête terminée invoque le callback attendu via le transport legacy approprié.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript
- Domaine
- frontend, web-dev
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100