request.getParameter returns 脏字符串
request.getParameter returns dirty string
我有一个由 CMS 制作的网站。当站点被正常访问并且用户使用 URL:
在站点上进行搜索时
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 而不管编码的实体
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
我有一个由 CMS 制作的网站。当站点被正常访问并且用户使用 URL:
在站点上进行搜索时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 而不管编码的实体
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