我看视频里老师在重发请求的时候,get方法后面是能出现空格的,我自己做的时候,发现不能有空格,都得用%20替换,否则响应头直接报400错误,,,咋回事。。我百度没找到原因。。。(我用的2023.9和2020.8这两个版本都是这情况)
视频上说是查看回放记录吧,不是实时在操作,实时应该要%20
可能是工具问题,有的工具是可以自动给你url编码的,命令行发送的就需要自己编码了
不知道怎么设置才能像老师那样
在URL中,空格和%20都用于表示空白字符,但它们之间存在一定的差异。
首先,从编码标准上来看,空格在URL中通常被编码为加号+或%20。根据W3C的标准,当Content-Type为application/x-www-form-urlencoded时,空格应使用加号+进行编码。然而,RFC 2396标准规定,在URI的查询组件中,保留字符需要转义为%HH格式,因此空格也被编码为%20。这是因为加号+在某些应用中可能被视为非法字符,而%20能被更广泛地接受并正确解析为空格。
其次,从浏览器兼容性的角度来看,不同的浏览器可能对空格的编码有不同的处理方式。有些浏览器可能会将加号+解释为空格,而有些则可能只识别%20作为空格的编码。这种差异可能会导致在不同的浏览器中访问同一URL时出现不一致的结果。
最后,从URL的设计初衷来理解,URL最初是设计为可以通过书面形式转录的,因此其构成字符必须是可书写的ASCII字符。由于空格字符在书面转录中容易被忽略,且在某些情况下可能会因意想不到的原因被引入,因此被视为不安全字符,需要进行转码。
综上所述,虽然空格和%20在URL中都用于表示空白,但由于编码标准、浏览器兼容性以及URL设计初衷的不同,它们在使用上可能会有所区别。在实际应用中,为了避免兼容性问题,使用%20来替代空格可能是一个更为稳妥的选择。综上所述,当你在URL栏直接输入空格时,浏览器可能不会将其解释为有效字符,而是会忽略或尝试进行某种形式的编码。而当你输入%20时,浏览器会根据标准将其解码为空格,因此输入%20是有效的。