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);
                    });

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

  • 相关阅读:
    MySQL 82 张图带你飞
    Docker一个优秀的应用容器
    大数据架构基础知识
    浏览器复杂吗
    5 分钟学懂 SSH 隧道技术
    图解数据分析如何驱动决策
    3D可视化管理推进能源革命
    一文全面解读B端产品和C端产品的差异
    智慧农业解决方案
    Win10删除右键多余选项菜单
  • 原文地址:https://www.cnblogs.com/lxhbky/p/12960604.html
Copyright © 2011-2022 走看看