request.getParameter returns 脏字符串

request.getParameter returns dirty string

我有一个由 CMS 制作的网站。当站点被正常访问并且用户使用 URL:

在站点上进行搜索时

https://test.se/test.html?language=sv&SubjectArea=Ekonomi&identity=programSV,coursesSV,lifeLongLearningCoursesSV&showbutton=false

JS代码:

let test = requester.getParameter("identity") 
console.log(test)
// programSV,coursesSV,lifeLongLearningCoursesSV

returns programSV,coursesSV,lifeLongLearningCoursesSV 符合预期。

但是当我以完全相同的方式访问该站点时 URL 但我来自外部页面 JS 上面的代码 returns 而是:programSV%2CcoursesSV%2ClifeLongLearningCoursesSV

对可能出现的问题以及如何解决这个问题有什么建议吗?

正在对逗号进行编码,您必须使用 decodeURIComponent。像这样:decodeURIComponent(requester.getParameter("identity"))。参考link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent

为了一致性使用 URL search params - 它会为您解码 URL 而不管编码的实体

或者使用decodeURIComponent

const url1 = new URL(`https://test.se/test.html?language=sv&SubjectArea=Ekonomi&identity=programSV,coursesSV,lifeLongLearningCoursesSV&showbutton=false`)

const url2 = new URL(`https://test.se/test.html?language=sv&SubjectArea=Ekonomi&identity=programSV%2CcoursesSV%2ClifeLongLearningCoursesSV&showbutton=false`)

console.log(url1.searchParams.get("identity"))

console.log(url2.searchParams.get("identity"))

// alternative

console.log(decodeURIComponent(`programSV%2CcoursesSV%2ClifeLongLearningCoursesSV`))

注意:decodeURI 对您的逗号没有任何作用:

decodeURI(requester.getParameter("identity"))

returns programSV%2CcoursesSV%2ClifeLongLearningCoursesSV

但是 decodeURIComponent 确实有效:

decodeURIComponent(requester.getParameter("identity"))

returns programSV,coursesSV,lifeLongLearningCoursesSV