typescript - Fetch-polyfill har olika Response-objekt i Internet Explorer 11


Jag har för närvarande problem med Internet Explorer 11 och Fetch API.

Jag har följande fetch-anrop med TypeScript:

await fetch(theForm.action, { method: theForm.method, body: formData, credentials: "include" })
    .then((response: Response) => {
        if (response.status === 500)
            throw Error(response.statusText);

        if (response.redirected && response.url)
            return window.location.href = response.url;

        return response.json();
    })
    .catch((error: Error) => {
        return this.setState({ isSubmitting: false, internalServerError: error });
    });

Koden är ts-kompilerad till ES2015 och sedan ner till ES5 med hjälp av babel. Jag har också lagt till babel-polyfill. Exempelprogrammet fungerar som förväntat på andra webbläsare än IE. Det visar sig att Response-objektet i IE är helt annorlunda och har inte ens egenskapen redirected och url är alltid tom.

Finns det någon polyfill jag borde använda för att få detta att fungera i IE? Och, om inte, vad skulle vara en bra lösning?

Svar #1

MDNs tabell för webbläsarkompatibilitet för Response säger att attributet redirected inte är tillgängligt i IE.

Du kan försöka använda en polyfill som https://github.com/github/fetch tillsammans med API-förslaget på https://github.com/github/fetch#obtaining-the-response-url.