fetch获取重定向地址后抛出错误状态0
时间: 2024-10-14 12:02:57 浏览: 36
fetch API 是 JavaScript 的一个内置函数,用于发起网络请求并返回响应数据。当你使用 `fetch` 获取资源时,如果服务器返回了 HTTP 状态码 3XX(表示临时重定向),比如 301、302 或者其他永久/临时重定向,`fetch` 返回的 Promise 会解析为一个 Response 对象。
然而,这并不意味着 Promise 会被直接抛出错误。默认情况下,fetch 并不会因为重定向而引发错误,它的行为取决于开发者如何处理这个 Response。如果你希望在遇到重定向时抛出错误,你需要检查 Response 对象的 `redirected` 属性,并通过 `.then()` 或 `.catch()` 操作手动处理这种情况。
例如:
```javascript
fetch(url)
.then(response => {
if (response.redirected) {
throw new Error(`Redirected to ${response.url}`);
}
// 如果没有重定向,则继续处理正常的响应
return response.text();
})
.catch(error => {
console.error('Fetch error:', error);
});
```
在这个例子中,如果 `response.redirected` 为 true,就会捕获到错误并打印出新的 URL。如果没有特别处理,fetch 默认会自动跟随重定向。
阅读全文