前端开发时,什么时候url需要使用encodeURIComponent?

在前端开发时,当需要将用户输入或者动态生成的字符串作为URL的一部分(特别是查询参数或路径片段)发送到服务器时,应当使用 encodeURIComponent 函数对字符串进行编码。
以下是一些具体场景:

  1. 查询参数
    当你在URL中添加查询参数(query parameters),例如通过 ?key=value 的形式附加到URL末尾时,每个键值对的“键”和“值”都需要被正确编码。
    这是因为查询参数可能包含特殊字符,如空格、引号、#、% 等,如果不编码,这些字符可能会导致URL解析错误或者引起安全问题。

    let search = 'search term with spaces';
    let url = `/search?query=${encodeURIComponent(search)}`;
    
  2. 路径片段(Path segments)
    在构建动态路由地址时,如果路径部分由用户输入或其他动态内容决定,也需要对这部分内容进行编码。因为URL路径中的某些字符如 /?# 以及一些保留字符如果不编码,可能导致路由匹配失败或被误解为其他类型的URL组成部分。

    let folderName = 'my folder';
    let url = `/folder/${encodeURIComponent(folderName)}`;
    
  3. 表单提交(FormData)
    虽然在创建表单数据对象(FormData)时,通常不需要手动调用 encodeURIComponent,因为浏览器会在发送请求时自动处理,但在某些情况下,比如直接拼接URL并以GET方式提交时,仍需确保参数编码。

总的来说,在任何你将用户输入或非固定文本合并到URL中的地方,都应该考虑使用 encodeURIComponent 来确保URL的有效性和安全性。

posted @ 2024-02-07 10:59  龙陌  阅读(350)  评论(0)    收藏  举报