当前位置: 首页 > 知识库问答 >
问题:

javascript - 如何解决Vue中URL查询参数传递时的特殊字符转义问题?

公冶和豫
2024-09-26

单点登录操作流程:客户单通过携带值得url路径跳转,白名单界面通过url中得id,key请求后端数据渲染界面。
浏览器URL中输入
http://localhost:8088/taxBureauLogin?id=1206&key=zE9+TICzsrej...

浏览器转义为 http://localhost:8088/taxBureauLoginid=1206&key=zE9%20TICzsre...

前端vue在界面created函数里面获取 key值传给后端,
let searchParams = new URLSearchParams(window.location.search);

但是获取得searchParams得key传给后端拿到后变成了
原字符:zE9+TICzsrejfujj/BXjCQ== 拿到后:zE9 TICzsrejfujj/BXjCQ==

!!!特殊字符被转义 + 变成了空格 ,360浏览器中/ 也被转义,
期望得到浏览器中输入得原格式!大佬们给个招!
不考虑正则因为不确定要传过来有没有空格

image.pngimage.png

共有3个答案

越信鸥
2024-09-26

你遇到的问题是由于 URL 中的特殊字符在传递过程中被转义了。特别是 + 号被转义成了空格。为了避免这种情况,你可以在前端对这些特殊字符进行编码和解码。
在 Vue.js 中,你可以使用 encodeURIComponent 和 decodeURIComponent 来处理这些特殊字符。以下是一个示例:

  1. 编码 URL 参数: 在生成 URL 时,使用 encodeURIComponent 对 key 进行编码。
    JavaScript代码
    let key = "zE9+TICzsrejfujj/BXjCQ==";
    let encodedKey = encodeURIComponent(key);
    let url = http://localhost:8088/taxBureauLogin?id=1206&key=${encodedKey};
  2. 解码 URL 参数: 在 Vue.js 中获取参数时,使用 decodeURIComponent 对 key 进行解码。

JavaScript代码

let searchParams = new URLSearchParams(window.location.search);
let key = searchParams.get('key');
let decodedKey = decodeURIComponent(key);

这样可以确保在传递过程中,特殊字符不会被错误地转义。

蓟捷
2024-09-26

https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchPar...
image.png

image.png

公冶弘壮
2024-09-26
const u1 = new URL('https://example.com?key=1+1'),
    u2 = new URL('https://exmaple.com?key=1%2b1')

console.log(u1.searchParams.get('key')) // 1 1
console.log(u2.searchParams.get('key')) // 1+1
 类似资料:
  • List queryParamters=new ArrayList();QueryParameters.Add(“abc”); final map finalMap=new hashmap<>(); FinalMap.Put(“Column”,Collections.SingletonList(QueryParamters+“”)); 我们可以强制不添加特殊字符,而我们的制作人得到我们所期望的吗?

  • 我想从'get codepage'传递2个参数到'mainpage',然后我出现了这个错误。这是我的getCodePage我传递参数的部分: 当我想将参数作为对象时,这是我的主页: 那么这里有一个错误:没有为类型“object”flutter error定义运算符“[]”

  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面

  • 问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题

  • 我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢

  • 我有一个命令行Java程序,我通过bash脚本传递参数。该行位于我的bash脚本文件中,如下所示: bash脚本在我的路径中,因此我可以通过键入 直接进入我的终端(我在OS X Yosemite上)。 当&符号作为参数传入时,它不是作为普通的&符号字符读取,而是作为执行某些进程的特殊字符&符号读取。但是,我希望能够简单地将&符号作为参数传入,而不必让程序用户手动转义字符。 有没有办法在我的bash