使用axios请求的坑
时间: 2023-10-24 14:38:02 浏览: 93
使用axios请求时,可能会遇到以下几个坑:
1.跨域问题:如果请求的接口与当前页面不在同一域名下,需要设置代理或者在服务端设置允许跨域。
2.请求携带cookie:默认情况下,axios请求是不会携带cookie的,需要设置withCredentials为true。
3.请求超时问题:可以通过设置timeout属性来解决,单位为毫秒。
4.请求拦截器和响应拦截器:可以在请求发起前或响应到达后对数据进行一些处理,比如添加token、loading等。
5.请求错误处理:在请求过程中可能会遇到错误,可以通过catch捕获错误并进行处理,比如弹出错误提示。
以上是使用axios请求时可能遇到的一些坑,需要注意处理。
相关问题
axios文件流下载
回答: 使用axios来下载文件有以下几个原因。首先,使用axios可以提供更好的安全性。通过使用axios发送请求,可以在请求头中添加token进行权限校验,确保只有具有合法权限的用户才能下载文件。这可以有效防止恶意用户通过修改请求参数获取到服务器的下载数据。\[3\]其次,使用axios可以提供更好的文件下载方式。通过设置axios的responseType为'blob',可以将后台返回的数据强制转换为blob类型,从而实现文件的下载。然后,可以通过创建一个下载链接,并设置相应的文件名,使用户可以方便地下载文件。\[2\]最后,使用axios可以提供更好的兼容性。通过使用axios发送请求,可以兼容不同浏览器的下载操作,包括兼容火狐浏览器。\[2\]综上所述,使用axios来下载文件可以提供更好的安全性、更好的文件下载方式和更好的兼容性。
#### 引用[.reference_title]
- *1* *3* [使用axios实现文件流下载的安全问题](https://blog.csdn.net/weixin_43236062/article/details/120531829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [axios获取后端文件流get/post下载Excel,详细步骤以及踩过的坑](https://blog.csdn.net/weixin_53350466/article/details/126469254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
request.session的坑
在使用request.session的过程中,可能会遇到一些坑。首先,在登录操作中,并不是所有的网站有了sessionid就可以进行业务操作,有时候会需要token。这个token并不会通过一次登录操作就直接给你,需要通过抓包来查看哪个接口的响应头中包含set-cookies信息,这个信息中可能包含了token。你可以通过s.cookies来查看是否已经有token了,如果有的话,只要调用那个接口,响应头中有set-cookies信息,就会直接写入s的cookies中。原来登录也并不是一步到位的操作。有时候在进行业务操作时,可能会遇到报错403,这时候需要注意抓包查看这时候需要的cookies长什么样,与你代码中的s的cookies是否匹配,如果缺少了某些信息,就需要像找token那样找到相应的接口调用来补上。
另外,使用session时可能会产生跨域资源共享问题。解决这个问题需要在前端请求中设置withCredentials: true。如果你使用的是axios,可以在请求中添加这个配置项来解决跨域session丢失的问题。配置示例如下:
this.$axios({
method: 'post',
url: 'http://localhost:5000/e/login',
data:{ 'fun' : 'login', "number": this.number, "password": this.password, 'radio': this.radio },
withCredentials: true //解决跨域session丢失 需前后端一同配置
})<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Vue项目和flask框架前后端分离session的坑](https://blog.csdn.net/qq_44771533/article/details/106928267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [关于通过requests.session()来完成登录操作的踩坑](https://blog.csdn.net/weixin_47175709/article/details/129679327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文