zoukankan      html  css  js  c++  java
  • js jquery-ajax/fetch请求时数据文本丢失加号和连接号的问题

      最近使用原生JS发起加密数据请求时,遇到请求数据的部分符号(“+”、“&”)丢失的问题。如下所示:原始数据:“a+b”,   实际请求数据:“a b”;“&”符号在请求字符串里是链接其他参数的意思;因此数据在不处理的情况下,会丢失符号数据。

      因此在我们需要处理可能含有“加号或连接符号”的数据时,一定要加转义处理:window.encodeURIComponent("a+b");

      为避免请求时产生类似的问题,尤其是处理加密数据的传输时,我们在js封装请求的时候,可以加上转义的操作后再发送请求。

    如下图:

    JS-fetch请求数据:

    我实际要发起的请求数据为:参数data,数据为:a+b&c_d;   实际上浏览器把data='a b'当成了一个参数,c_d=''当成了一个参数。

    fetch('/api/adyenpay/pay', {
                        method: 'post',
                        headers: {
                            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
                        },
                        body: "data=a+b&c_d"
                    }).then(function (res) {
                        return res.json();
                    }).then(function (data) {
                        var dataJson = JSON.parse(data.data);
                    });

    浏览器实际发出的请求数据如下:

  • 相关阅读:
    Oracle数据库中truncate命令和delete命令的区别
    数组中只出现一次的数字
    数对之差的最大值
    SQL Server: Difference Between Locking, Blocking and Dead Locking
    字符串处理
    Phpcms_V9任意文件上传
    最初的梦想
    陪你走过漫长岁月
    基于MitM的RDP降级攻击
    CVE-2017-0358
  • 原文地址:https://www.cnblogs.com/lxhbky/p/12960604.html
Copyright © 2011-2022 走看看