我看視頻里老師在重發(fā)請求的時候,get方法后面是能出現(xiàn)空格的,我自己做的時候,發(fā)現(xiàn)不能有空格,都得用%20替換,否則響應(yīng)頭直接報400錯誤,,,咋回事。。我百度沒找到原因。。。(我用的2023.9和2020.8這兩個版本都是這情況)
視頻上說是查看回放記錄吧,不是實時在操作,實時應(yīng)該要%20
可能是工具問題,有的工具是可以自動給你url編碼的,命令行發(fā)送的就需要自己編碼了
不知道怎么設(shè)置才能像老師那樣
在URL中,空格和%20都用于表示空白字符,但它們之間存在一定的差異。
首先,從編碼標(biāo)準(zhǔn)上來看,空格在URL中通常被編碼為加號+或%20。根據(jù)W3C的標(biāo)準(zhǔn),當(dāng)Content-Type為application/x-www-form-urlencoded時,空格應(yīng)使用加號+進(jìn)行編碼。然而,RFC 2396標(biāo)準(zhǔn)規(guī)定,在URI的查詢組件中,保留字符需要轉(zhuǎn)義為%HH格式,因此空格也被編碼為%20。這是因為加號+在某些應(yīng)用中可能被視為非法字符,而%20能被更廣泛地接受并正確解析為空格。
其次,從瀏覽器兼容性的角度來看,不同的瀏覽器可能對空格的編碼有不同的處理方式。有些瀏覽器可能會將加號+解釋為空格,而有些則可能只識別%20作為空格的編碼。這種差異可能會導(dǎo)致在不同的瀏覽器中訪問同一URL時出現(xiàn)不一致的結(jié)果。
最后,從URL的設(shè)計初衷來理解,URL最初是設(shè)計為可以通過書面形式轉(zhuǎn)錄的,因此其構(gòu)成字符必須是可書寫的ASCII字符。由于空格字符在書面轉(zhuǎn)錄中容易被忽略,且在某些情況下可能會因意想不到的原因被引入,因此被視為不安全字符,需要進(jìn)行轉(zhuǎn)碼。
綜上所述,雖然空格和%20在URL中都用于表示空白,但由于編碼標(biāo)準(zhǔn)、瀏覽器兼容性以及URL設(shè)計初衷的不同,它們在使用上可能會有所區(qū)別。在實際應(yīng)用中,為了避免兼容性問題,使用%20來替代空格可能是一個更為穩(wěn)妥的選擇。綜上所述,當(dāng)你在URL欄直接輸入空格時,瀏覽器可能不會將其解釋為有效字符,而是會忽略或嘗試進(jìn)行某種形式的編碼。而當(dāng)你輸入%20時,瀏覽器會根據(jù)標(biāo)準(zhǔn)將其解碼為空格,因此輸入%20是有效的。