zoukankan      html  css  js  c++  java
  • GET请求中对于参数中特殊字符的处理

    get请求响应为 400,问题在于:{}、\%&,因为有特殊符号所以报错了。

    解决方法:

    1、在 拼接 请求URL 之前 可以先将 path参数 的参数值通过 encodeURIComponent 处理一下。例如:

    var params = { token:xxx };
    for(item in params){
        params[item] = encodeURIComponent(params[item]);
    }

    2、或用 RegExp 去替代

    var reg = new RegExp(/\%/,"g");
    var reg1 = new RegExp(/&/,"g");
    var params = { token:xxx };
    for(item in params){
        params[item] = String(params[item]).repalce(reg,"%25").replace(reg1,"%25");
    }

    特殊字符分类

    1. 用于分隔 URI 组件的标点符号:;/?:@&=+$,#
    2. 其他ASCII 标点符号进行编码: - \_ . ! ~ * ' ( )

    encodeURIencodeURIComponent的区别:

    encodeURIComponent:传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。另外,encodeURIComponent只会对用于分隔 URI 组件的标点符号进行处理。不会对其他标点符号进行编码。

    encodeURI:进行url跳转时可以整体使用encodeURI。
    encodeURI():不会对用于分隔 URI 组件的标点符号进行编码,例如冒号、正斜杠、问号和井字号;
    encodeURI():在实践中更常见的是对查询字符串参数而不是对基础URL进行编码.

    兼容性比较强的替代版本:

    for(var item in params){
        var nowData = params[item];
        try{ 
           params[item] = encodeURIComponent(decodeURIComponent(nowData)) 
        }catch(err){
            var reg = new RegExp(/\%/,"g");
            params[item] = encodeURIComponent(decodeURIComponent(nowData.replace(reg,"%25")))
        }
    }
    • 浏览器在对%执行decodeURIComponent时报错
  • 相关阅读:
    C# 连接 Socks5 代理
    使用EF Core 连接远程oracle 不需要安装oracle客户端方法
    PLSQL Developer 12 汉化包下载
    对象异步赋值bug记录
    图片缩放
    根据对象的属性去重,获取新数组
    小程序购物车抛物线(贝塞尔曲线实现)
    文字溢出,换行方法整理
    整理一些最近开发小程序的经验
    【莫傷曉_开发笔记】linux java绘图字体乱码问题
  • 原文地址:https://www.cnblogs.com/ljygirl/p/14736189.html
Copyright © 2011-2022 走看看