url 编码问题

51 阅读1分钟

现象引入

浏览器发送请求时携带中文或某些符号时,会出现某些字符被编码的情况,如:想要发送如下请求:

image.png

但,浏览器实际发送该请求时,发送的是: www.baidu.com/?wd=%3Cscri…

现象分析

浏览器发送请求时,进行了url编码。将< >两个字符替换为为%3C和%3E(%后为十六进制数字)

为什么会进行编码?

  1. 某些字符会引起歧义:如 &
  2. 包含非ASCII字符,如中文。url本身只包含ascII字符,对于非ascII 字符会进行uft-8编码转义,将字符替换为utf-8编码。
  3. 防止注入攻击。如<script></script> 中的<会进行编码

其他: 浏览器在发送get请求时,会自动进行url编码