http.interceptors.request.use(config => { config.headers['Token'] = storage.get('Token') // 请求头带上token return config }, error => { return Promise.reject(error) })
时间: 2023-06-25 20:04:53 浏览: 39
这段代码是一个axios的请求拦截器,它会在每次请求发送前被调用。这里的作用是在请求头中带上一个名为 Token 的字段,并将其值设置为本地存储中的 Token 值。这样在后端接收到请求时,就可以从请求头中获取到 Token 值,进行用户身份验证和权限控制等操作。如果请求发生错误,这里会通过 Promise.reject 将错误对象返回,以便后续的错误处理。
相关问题
const http = axios.create({ timeout: 1000 * 86400, withCredentials: true, baseURL: '/star', headers: { 'Content-Type': 'application/json; charset=utf-8' } }) // 请求拦截 http.interceptors.request.use(config => { config.headers['Token'] = storage.get('Token') // 请求头带上token return config }, error => { return Promise.reject(error) }) // 响应拦截 http.interceptors.response.use(response => { if (response.data && response.data.code === 401) { // 401, token失效 router.push({ name: 'login' }) } return response }, error => { return Promise.reject(error) }) export default http
这是一个使用 axios 封装的 HTTP 请求实例,包括请求拦截和响应拦截。具体实现如下:
1. 创建一个名为 http 的 axios 实例,设置基础 URL、超时时间、跨域请求时是否需要凭证等参数。
```javascript
const http = axios.create({
timeout: 1000 * 86400, // 请求超时时间
withCredentials: true, // 跨域请求时是否需要使用凭证
baseURL: '/star', // 基础URL
headers: {
'Content-Type': 'application/json; charset=utf-8' // 请求头配置
}
})
```
2. 添加请求拦截器,当发起请求时,在请求头中添加 token,以便后端验证用户身份。
```javascript
http.interceptors.request.use(config => {
config.headers['Token'] = storage.get('Token') // 在请求头中添加 Token
return config
}, error => {
return Promise.reject(error)
})
```
3. 添加响应拦截器,当后端返回 401 状态码时,表示用户身份验证失败,此时跳转到登录页。
```javascript
http.interceptors.response.use(response => {
if (response.data && response.data.code === 401) { // 后端返回 401 状态码
router.push({ name: 'login' }) // 跳转到登录页
}
return response
}, error => {
return Promise.reject(error)
})
```
4. 导出 http 实例,供其他组件调用。
```javascript
export default http
```
这样封装后,我们在项目中可以直接使用 http 实例进行 API 请求,并自动携带 token,同时也可以处理后端返回的 401 状态码。
request.interceptors.request.use(config => { config.headers['Content-Type'] = 'application/json;charset=utf-8'; config.headers['Authorization'] = useUserStore().getBearerToken; // 设置请求头 return config }
这段代码定义了一个请求拦截器,用于在发送请求前对请求进行处理。具体来说,这个请求拦截器:
1. 设置请求头的 Content-Type 属性为 application/json;charset=utf-8,表示请求体的类型为 JSON 格式。
2. 设置请求头的 Authorization 属性为从 useUserStore().getBearerToken 方法获取的 Bearer Token,用于认证用户身份。
3. 返回处理后的 config 配置对象,继续执行请求。
这里使用了 Vue.js 中的 Composition API,通过 useUserStore() 方法获取了一个名为 userStore 的状态管理实例,并调用其中的 getBearerToken 方法来获取 Bearer Token。
通过定义请求拦截器,我们可以方便地对请求进行统一的处理,如添加请求头、处理认证信息等。此外,还可以在请求拦截器中进行错误处理,如处理 Token 过期、网络错误等情况。