前端发出的请求报400、403、500常见的错误。

本文解析了常见的HTTP错误,包括400错误(前后端交互参数不一致)、403错误(资源不可用,通常由权限设置引起)及500异常(服务端问题)。对于这些错误,文章给出了详细的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见的400错误:

       前后端交互的方法参数不一致,发生此错误需要仔细检查前端传递的参数数据的参数名、参数数目、参数类型是否与后端保持一致。

常见的403错误:
       403错误,是一种在网站访问过程中,常见的错误提示。403错误,表示资源不可用。服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误。前后端分离开发项目跨域问题比较容易出现此状态码。
常见的500异常:
       服务端异常所致。

 

### 前端取消 HTTP 请求的方法 在前端开发中,当用户交互频繁或者页面切换较快时,可能会遇到未完成的 HTTP 请求仍然占用资源的情况。为了优化性能并减少不必要的网络开销,可以使用 `axios` 的取消请求机制。 #### 使用 CancelToken 取消请求 `CancelToken` 是一种用于取消请求的方式,在较新的版本中虽然被标记为废弃,但在某些旧项目中仍可能使用到。以下是其基本用法: 创建一个 `CancelToken` 实例并通过配置传递给请求方法: ```javascript const CancelToken = axios.CancelToken; const source = CancelToken.source(); // 发起 GET 请求 axios.get('/user/12345', { cancelToken: source.token }).catch(function (thrown) { if (axios.isCancel(thrown)) { console.log('Request canceled', thrown.message); } else { // 处理其他错误 } }); // 手动取消请求 source.cancel('Operation canceled by the user.'); ``` 此代码片段展示了如何通过调用 `source.cancel()` 方法手动终止正在进行中的请求[^4]。 #### 使用 AbortController 取消请求 随着浏览器标准的发展,现代 JavaScript 推荐使用更通用的 `AbortController` 来管理异步任务的生命周期。这种方式不仅适用于 `fetch` API,也兼容于 `axios`。 下面是基于 `AbortController` 的实现方式: ```javascript const controller = new AbortController(); const signal = controller.signal; // 发起 POST 请求 axios.post('/user/12345', { name: 'new name' }, { signal, }) .then(response => { console.log(response.data); }) .catch(error => { if (error.name === "CanceledError") { console.warn('The request has been aborted.', error.message); } else { throw error; } }); // 当需要中断请求时执行以下语句 controller.abort(); console.log('Request was aborted'); ``` 在此例子中,一旦调用了 `controller.abort()` 函数,所有关联该信号的对象都会收到通知从而停止它们的操作[^1]。 #### 防止重复提交或多次并发请求 为了避免因快速点击按钮等原因造成的多个相同接口的同时调用问题,可以在发送新请求前先检查是否有现存待定的任务存在,并对其进行清理后再发起新一轮通信流程。例如利用缓存结构保存当前活动连接列表以便后续查询与控制。 具体做法如下所示: ```javascript let currentSource = null; function fetchData() { if(currentSource){ currentSource.cancel("Newer Request Coming"); currentSource = null; } const CancelToken = axios.CancelToken; currentSource = CancelToken.source(); return axios({ url:'/some/api', method:'get', cancelToken:currentSource.token }); } ``` 每当触发 fetch 数据逻辑之前会先行验证是否存在有效的 previous token 如果有则立刻销毁它再重新建立一个新的链接实例[^3]。 #### 注意事项 - **版本依赖**:自 v0.22.0 版本之后官方建议优先采用标准化方案即 `AbortController` 替代原有的私有化设计——`CancelToken`[^5]。 - **跨域支持**:无论是哪种形式都需要确保服务器端能够正确解析客户端发出的相关头部字段比如 `Connection: close` 或者特定状态码回应以配合前端行为调整策略[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值