Я случайно наткнулся на это, когда набрал неверный URL-адрес для веб-страницы в моем веб-браузере.
Почему при посещении http://example.com/%
возникает ошибка HTTP 400 Bad Request? Ожидает ли сервер что-то еще после или до знака процента?
Похоже, это происходит для серверов Apache и Nginx.
(Сервер: cloudflare-nginx) /superuser//%
(Сервер: Apache) http://mozilla.org/%
apache-http-server
webserver
http
nginx
iglvzx
источник
источник
Ответы:
Краткий ответ
Согласно RFC 3986 , пустой
%
символ не является допустимым синтаксисом URI ; за ним должны следовать две значащие шестнадцатеричные цифры.Длинный ответ
Полученный вами код статуса HTTP относится к
4xx
классу:В частности, код
400
определен Инженерной рабочей группой по Интернету (IETF) в RFC 2616:Цитирую Википедию (жирный акцент мой):
Если вы хотите , чтобы вставить буквальный
%
символ, вы должны использовать его процентный кодированное представление:%25
.дальнейшее чтение
источник
RewriteRule (.*) xyz/$1
(где xyz - любое имя папки) в .htaccess, вы должны удвоить -encode% как% 2525.Знак процента предназначен для вставки символа, который обычно не поддерживается в URL. Например,% 20 - это то же самое, что и пробел.
источник
%25
+
- это быстрый способ кодирования пробела. Если вам нужен реальный знак плюс, используйте его шестнадцатеричный код% 2B.