The read-only redirected
property of the Response
interface indicates whether or not the response is the result of a request you made which was redirected.
Relying on redirected to filter out redirects makes it easy for a forged redirect to prevent your content from working as expected. Instead, you should actually instead do the filtering when you call fetch()
. See the example Disallowing redirects, which shows this being done.
var isRedirected = Response.redirected;
A Boolean
which is true
if the response indicates that your request was redirected.
Checking to see if the response comes from a redirected request is as simple as checking this flag on the Response
object. In the code below, a textual message is inserted into an element when a redirect occurred during the fetch operation. Note, however, that this isn't as safe as outright rejecting redirects if they're unexpected, as described under Disallowing redirects below.
fetch("awesome-picture.jpg").then(function(response) { let elem = document.getElementById("warning-message-box"); if (response.redirected) { elem.innerHTML = "Unexpected redirect"; } else { elem.innerHTML = ""; } return response.blob(); }).then(function(imageBlob) { let imgObjectURL = URL.createObjectURL(imageBlob); document.getElementById("img-element-id").src = imgObjectURL; });
Because using redirected to manually filter out redirects can allow forgery of redirects, you should instead set the redirect mode to "error"
in the init
parameter when calling fetch()
, like this:
fetch("awesome-picture.jpg", { redirect: "error" }).then(function(response) { return response.blob(); }).then(function(imageBlob) { let imgObjectURL = URL.createObjectURL(imageBlob); document.getElementById("img-element-id").src = imgObjectURL; });
Specification | Status | Comment |
---|---|---|
Fetch The definition of 'redirected' in that specification. | Living Standard | Initial definition |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 60 | 16 | 49 | No | 47 | No |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | 60 | 60 | Yes | 49 | 47 | No | No |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Response/redirected