资讯专栏INFORMATION COLUMN

axios不会对url中的功能性字符进行编码

amuqiao / 3590人阅读

摘要:在请求中如果包括特殊字符的话,可能会导致接口接收参数失败,所以前端一般会对特殊字符进行,方法有两种对整个进行编码,会避开中的功能性字符,例如,编码前编码后对某个参数进行编码,会编码所有特殊字符编码前编码后在中就会对请求的整个进行,导致有些方

在请求中如果url包括特殊字符的话,可能会导致接口接收参数失败,所以前端一般会对特殊字符进行encode,方法有两种

encodeURI()

对整个url进行编码,会避开url中的功能性字符,例如,& ? [ ]

编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[
编码后:http://10.10.67.67:8080/api/chain/basic/users?params=%2b[

encodeURIComponent()

对某个参数进行编码,会编码所有特殊字符

编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[
编码后:http://10.10.67.67:8080/api/chain/basic/users?params=%2b%5B

在axios中就会对get请求的整个url进行encodeURI,导致有些get方法不能传[],所以在请求拦截器中可以对get方法多带带处理,避开axios的encodeURI

myAxios.interceptors.request.use(
  config => {
    let url = config.url
    // get参数编码
    if (config.method === "get" && config.params) {
      url += "?"
      let keys = Object.keys(config.params)
      for (let key of keys) {
        url += `${key}=${encodeURIComponent(config.params[key])}&`
      }
      url = url.substring(0, url.length - 1)
      config.params = {}
    }
    config.url = url
    return config
  },

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102370.html

相关文章

  • Ajax详解

    摘要:当请求完成后注册一个回调函数。该请求是否触发全局处理事件如等,请求发送前的回调函数,用来修改请求发送前,此功能可用来设置自定义头信息,在函数中返回将取消这个请求。例如,为请求指定一个回调函数名。即改变回调函数的,默认就是传入的整个对象。 Ajax Ajax 全称是 asynchronous javascript and xml,并不是新的编程语言,可以说是已有技术的组合,主要用来实现客...

    jokester 评论0 收藏0
  • axios 中文文档 翻译

    摘要:返回状态码,如果返回或者设置成,将会其他的将。一些错误是在设置请求时触发的你可以使用设置选项自定义状态码的错误范围。 axios 版本:v0.18.0 0.18.0的版本更新有一段时间了,使用起来跟原先基本没有什么变化。但是增加了一些功能,例如错误处理的辨别,于07-06-2018重新翻译和校验了该翻译,更正了一些错别字和表达不准的地方,但是难免仍有错误,欢迎指出。 由于工作需要,个人...

    verano 评论0 收藏0
  • 每日 30 秒 ⏱ URL 大爆炸

    showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/url/poster.png); 简介 URL结构、组成、query、hash、axios数组传递错误、HTTP 请求 伴随着微信消息的提示音 小四 发来一段代码说 不知道为什么请求不到页面数据: axios.get...

    W4n9Hu1 评论0 收藏0
  • Axios学习笔记

    摘要:表示应该使用基础验证,并提供数据。表示服务器响应的数据类型,可以是,,,,,,默认值是承载的值的头的名称。对原生进度事件的处理定义允许的响应内容的最大尺寸。基本认证的过程。后者将优先于前者。 Axios说明 Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。 安装 使用npm: $ npm install axios 使用bower $ bower in...

    546669204 评论0 收藏0
  • 前端培训-初级阶段-场景实战(2019-06-06)-Content-Type照表及日常使用

    摘要:前端最基础的就是。数据被编码为键值对。大法好,精准识别,也算是正确的表单提交。全局的默认值实例默认值创建实例时设置配置的默认值在实例已创建后修改默认值拦截器,可以拦截错误,进行上报。参考资料类型看云 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水...

    mayaohua 评论0 收藏0

发表评论

0条评论

amuqiao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<