js jquery-ajax/fetch請求時數據文本丟失加號和連接號的問題

来源:https://www.cnblogs.com/lxhbky/archive/2020/05/25/12960604.html
-Advertisement-
Play Games

最近使用原生JS發起加密數據請求時,遇到請求數據的部分符號(“+”、“&”)丟失的問題。如下所示:原始數據:“a+b”, 實際請求數據:“a b”;“&”符號在請求字元串里是鏈接其他參數的意思;因此數據在不處理的情況下,會丟失符號數據。 因此在我們需要處理可能含有“加號或連接符號”的數據時,一定要加 ...


  最近使用原生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);
                });

 

瀏覽器實際發出的請求數據如下:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備工作 1.開啟伺服器 ··windows系統: 方法1.搜索服務,找到mysql並開啟. 方法2.如果安裝的是5.7版本,cmd中輸入: net start MySQL57 ··Mac系統: 系統偏好設置開啟mysql,然後命令行運行以下代碼出現base字樣即可: source .bash_pr ...
  • 新聞 1. "谷歌應用已全面支持Android和iOS的黑暗模式" 1. "谷歌Pixel 5確認無緣旗艦處理器而改用驍龍765G" 教程 1. "知識點 | ViewModel 四種集成方式" 1. "協程中的取消和異常 | 核心概念介紹" 1. "在 Android 上進行高刷新率渲染" 1. ...
  • 一套代碼達到以下效果: 打包不同applicationId能同時安裝在同一手機上 不同logo,app名稱, 不同第三方SDK接入配置(例如微信分享appid,激光推送appkey) 能區分debug和release配置 甚至不同的so文件,不同的依賴jar包 (待補充) 使用到的功能:produc ...
  • 通過#import <objc/runtime.h>我們可以找到: 1 /** 2 * Returns a specified instance method for a given class. 3 * 4 * @param cls The class you want to inspect. 5 ...
  • MD5: + (NSString *)md5:(NSString *)input { const char *cStr = [input UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, (CC_LONG)s ...
  • 根據三大運營商出現的號段(號段來自百度百科) 判斷是否是手機號 + (BOOL)isMobile:(NSString *)str { NSString *MOBILE = @"^1(3[0-9]|4[579]|5[0-35-9]|6[2567]|7[0-35-8]|8[0-9]|9[189])\\d ...
  • React16.8開始內置了10個Hook,核心是2個: 狀態管理:useState 副作用管理:useEffect 有狀態的函數 useState 有狀態組件寫法: class Example extends React.Component { constructor(props) { super ...
  • 從HTML和CSS開始 HTML和CSS是Web開發的基本構建塊。無論您的Web應用程式有多先進,或者使用什麼框架和後端語言,都必須使用HTML和CSS構建前端應用程式。因此,這是在Web開發中要學習的第一件事。 HTML5(語義元素,屬性,文檔類型等) CSS基礎知識顏色,字體,位置,盒子模型等。 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...